title: Implicit jsonFormat for case class with varargs
body: <p>I have a case class containing varargs, with an implicit jsonFormat as follows:</p>
  
  <pre><code>import spray.json._
  case class Colors(name: String*)
  object MyJsonProtocol extends DefaultJsonProtocol {
    implicit val colorFormat = jsonFormat1(Colors)
  }
  import MyJsonProtocol._
  Colors("CadetBlue").toJson
  </code></pre>
  
  <p>It raises an error:</p>
  
  <pre><code>error: type mismatch;
  found   : Color2.type
  required: Seq[String] =&gt; Color2
  Note: implicit value colorFormat is not applicable here because it comes after the application point and it lacks an explicit result type
        implicit val colorFormat = jsonFormat1(Color2)
                                              ^
  </code></pre>
  
  <p>I have also tried:</p>
  
  <pre><code>implicit val colorFormat = jsonFormat1(Colors.apply)
  </code></pre>
  
  <p>which caused a different (runtime!) exception:</p>
  
  <pre><code>java.lang.RuntimeException: Cannot automatically determine case class field names and order for 'Colors', please use the 'jsonFormat' overload with explicit field name specification
  </code></pre>
  
  <p>The following:</p>
  
  <pre><code>implicit val colorFormat = jsonFormat(Colors, "name")
  </code></pre>
  
  <p>raises the former error</p>
  
  <p>It is even possible to define implicit jsonFormat for case class with varargs?</p>