[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
Well that is the entire point of the logs to begin with. If you can't tell what was pulled out of the cache then all we have is that a call was made which is fairly useless data that can already be easily figured out.

Since this is only intended for development and the developer knows whether or not they are storing huge amounts in cache,  they can either increase their dev memory limit or not use logging for such an extreme case. For all other cases, while the memory footprint does increase, again this is for dev work, it provides needed functionality.