Test coverage on bot.

- Actually resolves a typo bug where an invalid irc message would still
  be dispatched (and there was a point to code coverage after all)
Moves dispatch.Message to irc.Message

- Adjusts placeholder.go to use new irc.Message struct.
Adds another layer of threadsafety.

irc
- Adds a mechanism to close the writechan safely. See comments
  inet.IrcClient.Write / inet.IrcClient.Close
- Adds an IsClosed to IrcClient so other sources can verify if the
  connection was manually closed or not.
- IrcClient's SpawnWorkers now takes booleans to tell it which workers
  to spawn.
- Cleans up the Pump() method by extracting most of it's functionality
  into a method.
- Adjusts the calcSleepTime calculation to allow for 5 message burst
  followed by incrementing timeouts.
- Cleans up logging somewhat in the IrcClient.
- Adds notification of messages that did not reach the server even
  though they were properly queued and consumed.

bot
- Adds a Disconnect function to the coreHandler
- Bot now records his coreHandler id so it can be unregistered
- Start has a companion start function that can individually start
  the IrcClient threads. (again, testing)
- Fixes bot so it's Registrations take interface{} instead of a
  single known interface