Server-to-server protocol

There are a few changes that go beyond the scope of s2s along with some bug fixes, but for the most part, most things relate to s2s in some way.

The major changes:
- **Addition of a server-to-server protocol.** Obviously.
- **Removal of various user/channel lists.** These lists were found to be unnecessary or not useful enough to be worth the added overhead of making sure they're synced and everything.
  - **Removal of `IRCD.localusers`.** This was originally added in anticipation for s2s, but it turned out this list was fully unnecessary, as all the uses of it were either checking whether a user was on the local server (more efficient to check `user.server == self.ircd.name`) or for LUSERS (which counts various things and iterates through `IRCD.users` anyway).
  - **Removal of `IRCUser.channels`.** This list did get used, but would've been a huge pain to synchronize across servers (or at least to ensure its accuracy).  Most uses of this list checked whether the user was in a channel, accomplished just as easily by checking whether the user object is in the appropriate `IRCChannel.users` set.
      - **Status data is now saved in the `IRCChannel` object.** `IRCChannel.users` is now a dict of `IRCUser` objects => statuses, rather than storing the statuses in the `IRCUser.channels` dict.
      - **Standardization of `IRCUser` function parameters.** Whereas some functions took a channel object and others took a channel name, now all take a channel object.
- **Moving various code that should've been in the core to the core.** This includes code that sets modes, which is now in the core as `IRCChannel.setMode` and `IRCUser.setMode`.
- **db_services_leaf** This wasn't really needed before because there could only be one server, but due to db_services's use of fake users, it could really only be used on one server (unless you want a different services nick on each server, which would be dumb).  db_services_leaf was added to be loaded on all servers db_services isn't, and it provides command aliases and implements command blocking.
- **Modularized cloaking.** I got around to moving cloaking to a module like you wanted.  So that it cloaks the whole thing and to make it easier to ensure hostnames are <=64 chars, it always cloaks the IP.  It works like a hostname; i.e. the highest-order bytes are at the end (basically the IP address is reversed and cloaked).  Each part relies on the higher-order parts.  For example, the IP address 1.2.3.4 will be cloaked similarly to `hash(1234).hash(123).hash(12).hash(1)`.  IPv6 addresses are normalized first.
- **Various bug fixes.** I fixed some bugs.
- **Version bump.** This is version 0.2.0.  (Up from 0.1.0.)

This should not be regarded as a complete changelog because I haven't been keeping that much track of changes.

Also: I plan to continue running the public unofficial test server until we get an official one.  As I'd previously thought with the current master branch, this should be good code; I don't know of issues with it.  There may be something hiding, though, so it can always use more testing.