imports: fix a bug where registering the same implementation multiple times will generate multiple imports (f8c388b)
make all tests pass on every TypeScript version in the range [3.0, 4.3-rc1] (265ac93)
type arguments passed to registerSingleton and registerTransient should themselves be allowed to receive type arguments, and these should not count towards the service/implementation name (76773ab)