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.)
OK - perhaps we should reconsider how services in general are constructed, but I know you've been thinking about that. FWIW I don't believe this statement to be true: "only one is meant to be used by end-applications", but I'd have to check to find a counter example.