DI: Cleanup + Improvements

* Recover from errors. So you can attempt to create the same object several times.
* Change toFactory to use the reflector to construct dependencies. It is also possible to override them.
* Add support for nested bindings. 
```
new Injector([ClassA, [ClassB]]) is the same as new Injector([ClassA, ClassB])
```
* A few minor cleanup items.