inject will now inject interface implementors as dependencies.

If no concrete type is matched for the given type, and the type is an
interface, then inject will iterate the values map to search for any
implementors of that interface before moving to the parent injector.

This will be a performance hit for certain cases where the requested
dependencies exist concretely in the parent injector. The good news is
that this should solve issues with rewritten import paths and should
allow a looser injection scheme.
Formatting
Use godocdown to create a github-friendly readme

This commit adds a script 'update_readme.sh' that generates
github-friendly markdown using godocdown. When the documentation for the
readme for github should be updated because the package or package's
documentation changes, run:

sh update_readme.sh

to update README.md.  This commit is meant to be the first step in
addressing #3.
Add missing test condition for self-documentation

This commit adds a new assertation that states that when the Apply
function is called on a struct, fields that are not marked with an
inject tag are set to their default value.

Also ran gofmt on the code.
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.