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