irkerd: Add Python-3-compatible string handling
This implements the necessary changes to work around the (str,
unicode) -> (bytes, str) transition. We decode the bytes as soon as
possible after receiving them in the Irker*Handler classes. For
IRC-side connections, we still encode outgoing data right before
sending it in IRCServerConnection.ship.
We decode incoming IRC-side bytes in IRCServerConnection.consume,
after storing them as bytes in the LineBufferedStream
IRCServerConnection.buffer. That ensures that we don't try and decode
partial code points which are split across two socket messages.