Add a lot of lifted aeson instances
Implement profunctor-like functionality for UnjsonDef so that arrays can simulate