Slight re-write of how the logging works. LogLevels are now part of a log value rather than the other
way around. This makes it a lot easier to manage levels independently from the data they hold. Also
makes the actor event stream easier, but there could be a performance issue around working out what
the best way to classify what an event type is because they're essentially dynamic.