[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
including the data in the logs is a bad idea:

- it leaks memory (the result is kept in memory until the end of the process)
- it is not accurate in the profiler if the returned data is a mutable object