Add laundry list of interface sketches.

Should have pretty high test coverage here. The idea is to get down some
of the interfaces between various parts there should be.
Services -> Users -> channels etc.

Services should really be a pair of channels to communicate on. IRC will
probably be one service per channel and figure out more from there? Or
maybe Services should have channels associated and talk about them
explicitly. We shall see.

Plugins take an array of inputs and return an array of similar looking
(but maybe modified) outputs. If these are makred as parsed, then no
more modication may be done to them. Thus, a pipeline of messages gets
made and whatever is consumed is gone and whatever is left at the end is
outputted to the user.
Add gitignore