Move all the DJ integration work under a specific module namespace
Exchange binding WIP
WIP - jumping back to add a Consumer Loop concept
Every test case now uses a unique prefix, and the 'test' vhost is destroyed / created on startup. Makes purging much simpler.
No need for flakey purge! anymore
Functional, some tests for external consumer behaviour.
Use a single direct exchange, with routing_keys specifying the priority, and therefore, queue assignment.
Use a topic exchange
Make sure :auto_delete and :durable params are passed through, and report the correct exception
Ensure we lock the job when it is processed immediately
Adds a SortedArray to replace the cranky deferred cache.
Add a test that demonstrates the broken cache.
Rip out the cache and add the SortedArray.
Actually use SortedArray, and ensure elements with the same run_at time aren't deleted prematurely.
Use the mysql adapter by default.
Merge branch 'fix_deferred_tasks'

Conflicts:
	lib/tom_queue.rb
	lib/tom_queue/deferred_work_set.rb
Adds a quick benchmarker tool I used to test deferred_work_set optimisations
Revert "Ensure we lock the job when it is processed immediately"

This reverts commit c826e8827525ca9f04d39d4802252be92ea52c4b.
Ensure failed jobs and early notifications aren't run
Make the failed integration test more resilient against false-negatives.