Add ability to specify type string for Hash with single argument.

This adds the ability to write 'Hash[T]' where 'T' is the type of the
element. Default 'Literal' is then used for key.
Add ability to call lookup function with a lambda.

This adds the ability to call lookup with a lambda that gets the looked
up result for futher processing. The lambda gets undef when nothing was
found. This enables a convenient way to define a default when value is
missing.
Make lookup return :undef if nothing is found.
Nil does not work when returned to puppet logic.