How do we handle different capabilities? As SQS might have `batch*()` methods, beanstalk can `release`, `kick` or `bury`. We can create an interface `QueueInterface` and then `SqsQueueInterface` which extends the former with the additional `batch*()` methods. Similar for beanstalk. Thoughts?