Trial.optionals.non optionals

PR to not to be merged!
nothing clever duplicated code for non optional.
=> the issue is on how to create an object with non default constructor?

Not sure... we could do like:
Inspired by http://robots.thoughtbot.com/efficient-json-in-swift-with-functional-concepts-and-generics
(or Chris func approach)
you can use curry "create" method like https://github.com/corinnekrych/swift/blob/4d97e95f485b929d7554d01e9a4ffdb2172a7271/2.4.Monad.playground/section-6.swift#L7

But how to enforce by a protocol our OM should implement???