Documentation and cleanup dependencies

* Explain why it's ok to panic if an unknown key is found when looking up bundled integrations
* Remove extraneous dependencies from sample-app
Improve IntegrationManager Concurrency

Access to integrations is now guarded by a handler thread.
Note that they still run on the main thread.
Refactor Logger

Logger is now an immutable class that can swallow logging messages
instead of having to wrap all log calls in a conditional block.

Originally this was done to save string allocation, but most of those
are statically initialed anyway so we didn't see too many savings.
Reformat Code
Better Concurrency for IntegrationInitializedListener

The integration initialized listener is guarded by a handler as well.
Do not allocate an iterator for running each operation on Bundled
Integrations