Add category support in logger
At the moment, all log functions create their own strings on itself. This make it difficult to separate different categories of messages.
Replace existing functions to support things like:
log("server", "s1") << "disconnected"; debug("transport") << "client disconnected"; warning("plugin", p->get_name()) << "failed to execute: " << ex.what();