Remove the idea of queues/workers from spec.

A queue doesn’t need to know about other queues or the workers working
it to do its job. This is more of a UI state thing that probably came
from resque. We’ll bring it back in the future in a way that makes more
sense.
Remove remnants of workers/queues from all backends.
Remove multi json.

Use stdlib json as we no longer support 1.8.
Remove failed from spec.

Failure should be handled by failure handler, not backend.
connection= is set in base. No need in backends.
Clear only one queue at a time in aws backend.

Works same as others now.
Rename enqueue to push in spec.
Rename immediate enqueue to push.
Ensure custom queue is always clear for spec.
Rename reserve to pop in spec.
Order api methods the same in all backends.

Also inlined some methods for redis/mongo.
Reorder spec methods to match backend order.
Rename release to abort.
Renamed completed to complete.

I prefer thinking of each method as receiving a payload with a job to
do but completed is past tense and makes me think the work is done.
Renamed length to size.
Remove blocking backend stuff from spec.
Remove another use of block.
Removing work_off from worker.

I don’t see a use for it right now. I can see a use in specs and such,
but one should use immediate backend for that instead. Also, in
development you should be running a worker through a procfile or
whatever, not running this in irb/console.
Pop takes a queue name instead of a worker.

Simplifies the responsibility of backends.
Fewer top level methods for qu.