#90 Add Cons and Snoc + refactor Prism and Optional constructor

To make it more consistant with other Optics. `Iso`, `Lens`, `Optional` and `Traversal`all have a constructor that take 2 functions one from `S` to `A` and another from `B` to `T` (with `Option` in some cases).