Refactor create_combinator into two methods.

It was already known if a hash or array combinator was needed.
Not efficient to again compute this. Common method replaced by two
special methods.
Add support for assisted inject

This adds support for lookup of instances of classes that are
not explicitly bound. If a lookup of a type is a non data type, and
anonymous, a check is made if that class has either a class method with
signature inject(injector, scope), or a zero args initialize(). If so an
entry as automatically made for that class that produces an instance.
If a class has both an inject class method it wins over the zero args
constructor.

Nothing is injected if a class is created with new. This is only when
injector.lookup(SomeClass) is used.