(#16856) Adds Hiera2 bindings with backends for YAML and JSON

This commit contains the initial work on the Hiear2 bindings producer.
It is W.I.P. at this point as some concepts still remains to be
fully designed. In particular, this commit only contains whats needed
in order to read bindings from one module. The code that finds and
then combines modules is not included.
(#16856) Add merge to hash multibind producer.

Adds more tests
Start of cleaning up injector_spec
(#16856) Make binder return self in configuration methods.
(#16856) Clean up injector_spec by using let

This greatly reduces the repeated overhead in each test.
(#16856) Clean up injector_spec some more

Previous commit missed the last test
(#16856) Fix issues with assisted inject and improve testing of injector

This changes the rules for assisted inject (and instance production) by
selecting a more specific zero args :initialize over an :inject for
assisted inject, and (possibly argumented :initialize) for
InstanceProducer injection.
(#16856) Fix issue in multibind hash :priority conflict resolution

The problem was that priority compare was done the wrong way.
Tests improved.
Sorting speeded up by using sort instead of sort_by
(#16856) Add test of hash multibind :merge conflict resolution
(#16856) Make hash and array multibind handle flatten the same way

Hash only had flatten as boolean, not a level.
(#16856) Add test for binding transformer lambda and fix related issues

This fixes issues found when specifying a producer lambda:
- options from the binding were not passed on when there were
  internal options set. Fixed by merging options.
(maint) remove TODO
(maint) Remove a couple of lines of commented out dead code.
(#16856) Fix issue with missing type check for multibind type.

The type check was never invoked because of misnamed method.
(#16856) Fix yardoc for the central Binder classes

This makes a first pass at fixing yardoc for the central binder classes
(at least to the point that they do not crash yard). Expect more
complicated things to have more and better documentation.

Also includes fixes of some typos in code.
(yardoc) Make yardoc not crash for the Types classes
(#16856) Change hiera2 config reader to read categories as array instead of hash

The config was read as a hash of category names to value/path. This
is bad because a Ruby Hash does not guarantee the order in all versions
of the Ruby runtime. The order here is important as the precedence order
must be preserved.

This commit also changes what the hiera2 bindings provider returns from
a load; it is now a ContributedBindings instance which contains both
the named bindings, and the effective categories.

Tests and fixture data updated as a consequence.
(#16856) Add w.i.p on BinderConfig
(maint) Fix missing space separator in tree dumper

If string contained a space, the regexp that prevented a space
entry to not have a space separator also triggered on strings containing
a space. This is bad because formatted dump output then sometimes has no
spacing between values.
(#16856) Add BindingComposer

This adds a BindingComposer (contributions from modules and the site
level).
(#16856) Add class loader, system and default bindings, and extensions.

This adds new functionality.
- class loader loads classes sing the autoloader
- puppetx defines extensions
- syntax checker makes use of puppetx
- Json syntax checker as example and for Heredoc/Templates support
- Fixes in composer
- Fixes and tweaks to supporting classes