[WIP] Add logging and DataCollector

WORK IN PROGRESS

Architecture:
* A service tag is added to provider services in the extension.
* A compiler pass is used to replace the provider class with a proxy. For performance, this only happens if the kernel is in debug mode.
* The proxies log certain calls and data to a central LogMaster.
* The DataCollector uses the LogMaster to retrieve and display data in the debug toolbar and panel.
* The LogMaster can be retrieved and used for any other purpose that needs access the logs.

To do:
- [ ] Need a icon for the debug toolbar.
- [x] Finish profiler panel display
- [x] Doc blocks
- [ ] Tests
- [x] General cleanup

... more
This does not make any sense IMO. The cache should be injected instead of injecting the class name and the constructor arguments