#115 Remove inheritance between Optics

This change is not ready yet, all the syntax (symbolic operators) part needs to be refactored.
I would prefer to improve the performance here, if fold return a lazy structure, getOption should be in O(1)