Introduce type family on Has typeclass and proxy argument on getField
Support lenses and simple update