Change EntityEncoder constructor pattern to that of EntityDecoder
Make EntityEncoders vals where possible
Reorder curried signature of `encodeBy`
Reorder param lists for EntityDecoder to match EntityEncoder

Now (MediaType*)(A => Task[Entity])
Add some docs and fix a test
decodeBy now requires at least one MediaRange
Fix some doc problems
Merge branch 'topic/EntityEncoderConstrctor'

Conflicts:
	core/src/main/scala/org/http4s/EntityEncoder.scala