Change EncodeJson/DecodeJson variance

For types `B` <: `A`, a implicit instances of `EncodeJson[A]` will now be accepted when `EncodeJson[B]` is required.
Similarly, a `DecodeJson[B]` will be accepted for `DecodeJson[A]`.

e.g: an implicit `EncodeJson[Seq[T]]` can be used for `EncodeJson[List[T]]`, `EncodeJson[Vector[T]]`, etc.