I broke the format for timestamps at one point. My bad.
CAPability and tags.

This implements part of the IRCv2/3 spec in that the parser now vaguely understands how to handle tags. By doing capability negotiation, we can also determine if we really *should* send SASL content over the wire.

This also adds support for timestamps in messages, which means ZNC playback should happen seamlessly. If the timestamps are strangely off, I don't know what I've done wrong.