API: Update Requirements to use Injector and Config

- Rename `Requirements_Backend` to `RequirementsHandler` - `Requirements_Backend` is now an interface for the required methods
- Switch to the `Config` API for setting various static properties
- Move `Requirements_Backend->combine_js_with_jsmin` and `write_header_comment` to `Config`, use `__set()` to deprecate them
- Update names of static methods to be more consistent with coding conventions (existing template syntax preserved with `TemplateGlobalProvider`)
- Update unit tests and existing uses of `Requirements` in core

All comments are welcome :)
Hopefully this will mean subclasses of SapphireTest will no longer need to have to do this in each test. A lot of this work being moved up one level should simplify testing in the future.