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.
Well, Symfony follows PSR-2, which settled on 4 spaces.
I know Drupal cannot change its coding standards easily to switch to PSR-2, due to the impact of the change though.

Anyway, if your editor supports the .editorconfig format, Symfony provides the config: https://github.com/symfony/symfony/blob/master/.editorconfig So if it does not support this format, you can request it to improve things.
Note that PhpStorm has a plugin to support it (I haven't tried it though): http://plugins.jetbrains.com/plugin/7294