#115 Remove inheritance between Optics

This change is not ready yet, all the syntax (symbolic operators) part needs to be refactored.
I think it would be better to make the Optics transformations not final, so one would be able to override and optimize a general optic. (But require operational equivalence.)