mega change. refactored adapton semantics, added an extended adapton bidirectional semantics, added an common interface for writing BX lenses (Eager/Lazy)