Changes proposed by Adam

- Circular dependencies are verified by the injector, bindings only provide what are their dependencies;
- getSingletonOf is gone;
- Exception is raised when _getBinding is called and there is no binding for such key;
- _addBindingFromType renamed to _createBindingForType;
- Binding classes have been refactored to reuse code;
- New indirect circular dependency test with 2 levels of dependency;
- Minor changes.
Pulled commits from inject and resolved conflicts