Container compiler

Compile the container to PHP code for best performances.

TODO:

- [x] ContainerCompiler
- [x] ValueDefinitionCompiler
- [x] AliasDefinitionCompiler
- [x] ClassDefinitionCompiler
- [x] CallbackDefinitionCompiler
- [x] Lazy reading/loading of definition sources (read definitions lazily bc the compiled container doesn't need them)
- [ ] Work on performances: [mnapoli/di-benchmark](https://github.com/mnapoli/di-benchmark)
- [ ] Compile all known definitions upstart in a single file
- [ ] Lazy injection

What would also be needed:

- environment support (i.e. to have one compiled container per environment, else it's gonna mess up)
- differentiate static configuration (files, annotations, autowiring) from dynamic (`Container::set()`) -> dynamic shouldn't be compiled

Also instead of maintaining 2 ways of resolving definitions (DefinitionResolver and DefinitionCompiler), it might be easier to just `eval()` the code generated by the compiler on the fly. This generated code can be cached as definitions are cached today. I think it would be even faster than today.

I did mess some things up with git, I should have put some commits in the 4.0 branch instead of this one :/