Add Functor Monad and Applicative id instances

Useful for working with structures that are parametrized on a `Functor` (or `Monad`) and let you use `id` in place of an actual `Monad`. One example is monad transformers, where these eliminate the need for two variants of the `run` family of functions.