Functor

Added Functor and Maybe.

As I note in the test, Swift *seems* to infer the type returned from `fmap` incorrectly. Or maybe we messed up the types somewhere?

/cc @joshvera