Type class, instances and Template Haskell splices for overloaded optical accessors (lenses and prisms).