Add GHC.Records with implementation of `Has` class
Introduce type family on Has typeclass and proxy argument on getField
Support lenses and simple update
Type-changing update