simplified DDReader/DDWriter variances

I simplified variance and removed unneeded implicits...

DDReader is invariant because variance when reading is just a pain...
DDWriter is contravariant because it helps managing writer with inheriting classes such as collections DDWrites[Seq/List/Set/...] without writing for each type.