Type-parameterise IrcReader and write tests.

The type-parameterisation is mostly just to allow the tests to be written.
It's a bit of a shame to be pushing this out to users of the class.