New logging system

This PR revamps the logging system, re-writing it entirely. The code has pretty extensive documentation (I hope) but here are the highlights:
 - Multi-threaded logging, avoiding excessive logging from slowing down the emulation as much. (Especially on Windows where console writes are slow.)
 - Nicely trimmed paths relative to the source directory, without the source repository prefix.
 - Completely re-organized severity levels and log classes, with documentation providing guidelines for use of each class which should prevent misuse.
 - All the logging statements in the code have been updated to follow the new guidelines.
 - Runtime-configurable filter (currently read from the configuration file) allowing configuration of the log levels for each different log class.
 - Possibility of future extensions to support logging to the GUI or silencing of spammy log messages. (Planned for future PRs.)
My main issue with it is that configuration handling should be merged with our QSettings file eventually, and the QSettings object should then be initialized after our QApplication, because that's where it retrieves some setup from (e.g. organization/application name).

The logging code itself is probably not too much of an issue here, albeit it would have been nice to gather all setup code in MainWindow rather than outside of it.