Add lens compatibility without depending on lens.

This native re-implementation of lens is really just a sensible way of
providing efficient record getters, setters, and modifiers. It just so
happens to interoperate with the lens package.