Rewrite major Optics using Profunctors

I mostly used this post http://r6research.livejournal.com/27476.html

I am still struggling to implement constructors for `Traversal`