Add .MapHandler, which allows mapping types to a handler.

The .MapHandler function maps all of the output types of the given
function to the function. Whenever one of the types is requested,
the function is executed (in the context of the injector of course)
and the resulting value is used.

Technical notes:

-) I added the .MapHandler function for backwards compatiblity.
I believe it was previously possible to map a function as a type,
and I wanted to maintain that functionality.

-) The input to .MapHandler is an interface{} so that all function
signatures are supported. This also means that it might panic if
bad values are specified, which I think is desirable. Otherwise
the behavior may be quite strange.