added support for injecting constructors and factories, modified registration to be fluent