Added cached Instantiator to be used in production instead of the Runtime version

Runtime Instantiator is dangerous to be used in Production, and you probably should not need to code your own implementation of a cached one everytime you need to use Lazy Loading. Solution, use this one instead.

Original solution by Dries Vanlerberghe.
Code sponsored by Capgemini.
should be removed, and the Symfony license header should be added instead