Option to select the fields for output in templatesource

Option to select the fields for output in templatesource
this breaks binary compatibilty because the class now has an additional constructor. Could we instead get the same result by adding a method to the companion object?

```scala
object TemplatedTsv {
  // This might be a use case for the builder pattern:
  case class Builder(basePath: String, template: String, pathFields: Option[String], writeHeader: Option[Boolean], sinkMode: Option[SinkMode], fields: Option[Fields]) {
    def setPathFields(f: Fields) = copy(pathFields = Some(f))
    def setWriteHeader(b: Boolean) = copy(writeHeader = Some(b))
    // etc...
    def build: TemplateSource with DelimetedScheme = {
      val bldr = this
      new TemplateSource with DelimitedScheme {
        // override everything here
        override val pathFields = bldr.pathFields.getOrElse(Fields.ALL)
        override val writeHeader = bldr.writeHeader.getOrElse(false)
        // etc... 
      }
    }
  }
  // this is a builder approach for TemplatedTsv.
  def pathAndTemplate(path: String, template: String): Builder = Builder(path, template, None, None, None, None)
}
```