Added generalize function

Okay, this may be naive, but I think the function is useful.

If this makes sense, I think it could be also useful to define something like:

```haskell
generalizeBase :: (MFunctor t, Monad m) => t Identity a -> t m a
generalizeBase = hoist generalize
```

I don't like the name `generalizeBase` because it overlaps with `MonadBase` thing.
`generalizeT` seems to be a better fit, but I'd expect it to be of type `(MonadTrans t, Monad m) => IdentityT m a -> t m a`.