Use container.hasCache to check if controller has been instantiated (Fixes #4420).

We need to use a normalized version of `fullName` otherwise it will
return always the prototype.