Container throws if injection registered for already instantiated type.

Prior to this commit, the container would happily allow you to register an
injection for a type that had already been instantiated. This led to
confusing-to-debug situations where an injection is registered but a
container-created instance doesn't have the injection applied.

Also covers factoryInjections.