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 :)
Man, I think that's one big can of worms to open right now. Let's stick with how it is, I doubt there are many people that rely or want the function names in templates to be case-insensitive