Instead of having lots of objects implement Comparable or Comparator,
pass the comparator in to the PriorityBlockingQueue.
This requires recreating the queue if the QueueHandler is ever changed,
but the previous behaviour resulted in an unstable/undefined ordering,
so it's probably better this way anyway.
This means that QueueItems no longer need to know about QueueHandler,
which makes me slightly happier.
This allows the logic to be expressed more nicely and tested
independently of the handlers. It also paves the way for a
bit of refactoring to reduce the number of random things
that need to be comparable...
Add support for message tags from IRCv3 to IRCReader. Fixes #6
ReadLine now parses tags out of incoming lines (tags are not currently passed through the encoder)
IRCParser.tokeniseLine() now understands that tags may exist at the start of a line and tokenises accordingly.
(In reality, the only time it ever sees them is during testing)
Parser processLine now looks for timestamps from tags from the ReadLine, not by parsing token[0] itself.
Made IRCReader tests a lot less annoying to work with.