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.
dbservice: A subclass of Service for services with a database connection
Add pymysql to requirement.txt

This is needed for db stuff to work
Pull in schema file + test data from master branch
Implement BidServ, a service for bidding on auctions.

It's quite desert bus specific, probably not useful to anyone else.

Most of the behaviour was copied from db_services.py on the master branch.
Future work:
    There should be a command that can revert a Going (Once|Twice)
        (maybe like ONCE --force, TWICE --force)
    There should be a "re-announce" which prints a similar banner to the auction start banner.
        This would be useful if some time has passed since the last bid and mods want to remind people.
bidserv: Take extra ident info from config
bidserv: Add a TODO for a better way to notify winners

We should notify the winner based on donorID, not nick.
But we can't until Nickserv is done.
bidserv: Have "/bs COMMAND" route commands to bidserv
bidserv: Add ONCE REVERT and TWICE REVERT command options
bidserv: Improve how decimals look in auction logs

old:
    !!python/object/apply:decimal.Decimal ['5.00']
new:
    '5.00'