Functorx2

The only idea I have came up with, is we can manually box things into a Maybe Functor struct. (structs supposedly offer "newtype" level no-overhead).

Instead of:
```
let y: Maybe<Int> = x.fmap({ $0 * 2 })
```
we
```
let y: Maybe<Int> = MaybeF(m: x).fmap({ $0 * 2 })
```

We get some type inference back, but it may not be a overall "better" experience.

@joshaber