Change EntityEncoder constructor pattern to that of EntityDecoder

__This may not be ready.__

That PR brings the ```EntityEncoder``` closer to ```EntityDecoder``` with the exception of the factory methods. They are not curried. I find myself always forgetting the ```()``` at the end if I don't want to add a header. It also forbids overloading on the second argument list which is a pain if I want to have both
```scala
def encodedBy[A](f: A => Task[Entity])(headers: Header*): EntityEncoder[A] = ???

// no-go: the two methods are ambiguous.
def encodedBy[A](f: A => Task[Entity])(headers: Headers): EntityEncoder[A] = ???
```
which come in handy for the common case of a single header.

At any rate, I think ```EntityEncoder``` and ```EntityDecoder``` should be symmetric in being curried or not, so I'm soliciting opinions.
could we instead have a constructor that takes a non empty var args of headers and one that takes no header? e.g.
```scala
def encodeBy[A](f: A => Task[Entity]): EntityEncoder[A] = ???
def encodeBy[A](h: Header, hs: Header*)(f: A => Task[Entity]): EntityEncoder[A] = ???
```