irc: refactor irc.Message and memory allocations
Reduce memory allocations in the clients by using a thread-safe blocking
write buffer. This buffer limits the amount of in-flight messages we can
have, but is also statically allocated so we don't require allocating
each message (even if we won't be keeping it).
Reduce Message memory footprint by parsing on the fly - this should be
just about as fast, maybe faster since we *should* use the CPU cache
a bit better.
Signed-off-by: Tim Culverhouse <tim@timculverhouse.com>