Remove time.sleep() race conditions in tests

Remove time.sleep() as a way to wait for asynchronous jobs to finish in the tests. Use thread events to listen for them instead. This makes the tests faster and removes race conditions, making the tests deterministic. This also replaces `fake_ckan.py` with httpretty URL mocking.

This adds a new column `_test_callback_url` to the database, so it may need a db migration. This was only needed for one test, I couldn't think of another way to get that test to work.

We may be able to avoid the db migration by changing it to support `result_url` being either a string or a list of strings, instead of adding `_test_callback_url`.

Also breaks `test_asynchronous_post_with_return_url()` into two tests.