#115 Remove inheritance between Optics

This change is not ready yet, all the syntax (symbolic operators) part needs to be refactored.
that's a good point, we could also make Getter a case class