Create database and tear down/recreate at end of each test. Fixes #195

This pull request means that there is always a populated test database that is wiped and re-created at the end of each test. This gets around some issues we've had where a database was required before tests were even run.
This is taking advantage of the fact that you can have multiple decorators nested on a single function. Now instead of creating the database on set up and destroying it on tear down, we create the database initially in the environment set up script and then, on tear down, drop the database and rebuild it. Because the decorators are executed top-of-list to bottom-of-list, it will first run the `@drop_test_database` decorator, then the `@build_test_decorator`, then the rest of tear down. This means we always have a populated database except for the few microseconds between drop and build running.