Add missing name in one injector test
Rename MultiLookupProducerDescriptor to HashLookup...

Name was bad. The producer looks up a hash, and then a key in the hash.
This also changes the attribut 'detail_name' to 'key' and adjust error
checking / issue text.
Add test and fix issues with HashLookupProducer

This adds support for HashLookupProducer that was missing in the
factory, fixes typos and other small issues to make HashLookupProducer
work (it looks up a hash, and then a key in the produced hash).
Add more tests and checks

Adds more checks to hash multibind contributions and tests for these
cases. Improves test structure.
Add lookup loop detection

Almost any lookups can potentially lead to a recursion. All calls
pass through either lookup_key. or lookup_producer_key and these protect
endless lookup loop of the same key.
Adds check that array multibind gets array[T] or T as contribution.
Fix Yardoc and some internal cleanup of dead code/comments
Add support for Multibind combinators and refactor to make use of them

This adds multibind combinatators as separate classes (instead of
having nested logic inside of the producers). An instance of
a combinator is always used in the refactored implementation.

This commit also adds support for a puppet dsl lambda defined
combinatator, and a combinator that is produced by injection.
(These two remain untested at this point).