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

This continues the work started in PUP-546 and also removes the support for categorized/predicated bindings.
As this changes how injector bindings models can be aggregated and combined it is now possible to instead
override injectors. Injector creation (and override) is also simplified. Since override is now possible, support for
making a binding 'final' was also added.