Display realhost in WHOIS to opers and the user themselves
Add an install script and some minimal install instructions

This script gives us Nice Things like an upstart service and config file in /etc
install script: Delete existing files

This lets us avoid weird stale data from previous installs fucking with things
install: Add capability to run as user, and create it if needed

This allows the daemon to run correctly as an unpriveliged user,
without requiring any special setup from the administrator.
install: Add systemd support

Change the way you run it so that instead of running ./install directly,
you choose the relevant init system version and run that.
Add blank sample config for now

We can fill it in later, but it needs to exist as the installer wants to install it.
install: Be more selective about what we wipe when re-installing

We want to completely replace code directories (as opposed to a simple overwrite,
this won't cause problems when a file is no longer present or renamed).
We don't want to replace the config file.
We don't want to delete other stuff in the existing install dir, eg. auction logs.
We don't want to re-install dependencies unless we have to.
Rename the example config to make it more clearly only an example
Merge pull request #33 from Heufneutje/whois-display-realhost

Display realhost in WHOIS to opers and the user themselves
Merge pull request #23 from ekimekim/installer

Add an install script
Add services as a subtype of ModuleData

Services are modules that act like a pseudo-user and respond to commands.
They come "out of the box" with some useful functionality and shortcuts,
see service.Service for details.
Services are subclasses of ModuleData (instead of being their own seperate class)
because they need to make use of a number of module-level hooks, and it makes it easier
for the implementor if this is done automatically.

What is not implemented here:
    How to determine if a user is a service admin.
        Hopefully to be done later.
    Anything to do with cross-server management of services.
Create a test service testing basic service functionality

Put it under a new test/ directory for all such basic test modules.
Add admin operator permission lookup to services
services: Abstract sending a user a NOTICE with message splitting into a method tellUser()
service: Set host, ident and gecos on self.user

Allow subclass to set them custom, else default to nick and server name.
service: Fix a race cdn where a user might disconnect before we try to send them a message

This is mainly a problem in callbacks and stuff, but we put it in the helper function to keep it simple.
service: Handle nick collisions with our LocalUser

Bitch-slap the other user.