Rewrite synchronization in IrcClient.

- Add responsiveness by using multiple and select.
- Remove Wait in favor of a much more responsive Close.
- Remove strange synchronization in favor of channels.
- Remove all synchronization and multi-message queueing from queue and
  no longer have multiple threads read and write from it.
Add a way to retrieve the siphon chan as read only
Provide fine-grained control over server state.

- Add fine-grained control over dispatch goroutines, and connection
  state.
- Add locks to all of the important bot functions when it comes to
  modifying the state of running servers.
- Add dispatcher and connection state vars to servers.
- Change error format vars to constants.