Add type documentation for bot.loop
Add support for using a database connection safely in coroutine plugins using event.async()

This moves preparing event.db and closing event.db into event.prepare() and event.close()

That then allows for event.prepare() to prepare an event.db_executor executor which the database is initialized in.

Then event.async() will run event.bot.loop.run_in_executor(event.db_executor, func, *args) so that the database can always be accessed in the same thread.

Also, event.close() will call db.close() in the db_executor thread now, because the db is _only_ accessible from that thread.

This then allows us to add su
Update factoids to have _all_ methods use @asyncio.coroutine, using the event.async() function for safe database access
Set config indent to 4.
Change reply format from ({}) to {},
Change ctcp reply to return 'Eliralin'
Update minecraft_status to use unicode checks, and with a new format.
Add steal plugin.
Replace symbol for factoids.

Changes ?fact to ^fact
Add teamcity plugin
Add more dinner phrases
Create eliralin_utility.py for extras
Add per-channel command prefixes
Add profiling module for profiling
Add QPT - Quick Plugin Testing

Adds a has_run attribute to Plugin for use in determining test completeness

Disables the command limiting system when using QPT

QPT Tests:
- mass.py - Tests almost all bot commands, but requires the suer to watch console output for errors or incorrect results.
- test_admin.py - Tests the admin plugin accurantly, validating command results against regexes
- print_all_commands.py - Debugging test that just prints all the bot's commands to console, currently disabled

QPT can be enabled with the "--qpt" command line argument.
Catch the case where bukget returns no authors for a given plugin
Change regex_chans default from True to False
Use qx.lc for all shortening, just to test