Improved logging with runtime levels.

Logging is now enabled for all build flavors. Levels can be turned on
and off at runtime, and this functionality is exposed externally. This
also exposes the ability to optionally set the logging dispatch queue.

The default for debug builds is DEBUG level (everything), while
release builds default to ERROR level. The app can also set the
DISABLED level, which will turn off all logging.

If no logger has been attached, then NSLog will be used, but only for
debug builds and only if the logging level is met.