(maint) Remove support for categories in the binder

This removes the ability to define categories and use
predicated bindings. Instead, all contributors should evaluate
predicates and only contribute applicable bindings.

This reduces the complexity of the binder.

The support for predicated bindings was only there to support
the now removed experimental "hiera2-data-in-modules"
(yardoc) Fix yardoc text for Injector and BindingsFactory
(maint) Refactor Binder to not use two step creation.

Earlier it was required to first create an instance of Binder,
and then ask it to configure categories, and then layers. Now
that categories are removed, the creation can be made in one
step and the layered bindings are now passed to the constructor.

This removes the need to have methods to query if the binder
is configured.

This also adds a first step in supporting creation of a stacked
injector (the binder can not accept a parent binder - this is w.i.p).
(maint) Cleanup spec tests after refactor of binder one step create
(maint) Add support for final binding

A final binding may not be overridden in a higher layer.
(maint) Add handling of layered multibind

This adds correct handling of multibind contributions when
injectors are stacked. Higher layer contributions cannot be allowed
to leave behind a cached multibind containing entries from an overriding
injector when it goes out of scope.
(maint) Add convenient create/override ability to Injector

Setting up the initial injector, as well as creating an override
required quite a bit of gymnastics. This is now made much simpler.

The Injector now has class methods create, create_from_model, and
create_from_hash. The instance has override, override_with_model,
override_with_hash.
Merge pull request #2208 from hlindberg/maint_remove-categories-add-dynamic-layers

(PUP-546)(maint) remove categories add dynamic layers