Add failing testcases for where mixed constructors of a monadic type are used
Fix inference of monadic type based on LUB of constructor types used

So for example, if you use `unwrap(Some(3))` and `unwrap(None)` in the same
`monadically` block, it will be able to infer that the monadic type being used
is `Option`.

There's still a failure to infer a monadic supertype of the LUB, though;
for instance if you use only `unwrap(None)` in a `monadically` block, the
LUB of `None` is just `None`, not `Option`, so it will fail. Added a failing
testcase for this situation. It's worth noting that even "normal" use of
the `Monad` type class in scalaz has this problem, e.g.

    List(Some(1), Some(2)).sequence

will fail to type check because an instance of `Monad[Some]` cannot be found.
Infer the first monadic supertype of the LUB of all `unwrap` arg types