Run each test in a new bot thread

This provides more isolation and makes it a lot easier to debug
problems, as all captured logging pertains to one test and one test
only.

This makes our tests run for quite a bit longer, which is a downside,
however this was invaluable to me in figuring out what was wrong
with the webhooks tests. It also provides safety against one set of
tests influencing another by altering the running bot's environment.

Closes #124