Remove time sleep

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 also replaces `fake_cckan.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.