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.
Merge pull request #4328 from lukemelia/injection-error

Container throws if injection registered for already instantiated type