feat(Injector): Allow injecting parameterized types

This PR supersedes #123: The first commit is a rebased version of it + some fixes.

It also includes #157 which I needed for poperly testing on my machine.

@jbdeboer @antingshen @mhevery could one of you review it and merge and release 2.0.2 ?