Rewrite major Optics using Profunctors
use Kind Projector
Update scalac options
Use step in Optional constructor
Simplify ProFunctor definition
Remove Optic definition for Traversal until we know how to implement it for all Traverse
Fix test
Add comment with desired definition of Traversal
Merge pull request #135 from julien-truffaut/optic

Rewrite major Optics using Profunctors