Replace backend socket with Queue

This is an alternative approach to the broker. By removing the backend socket the code becomes noticeably simpler without sacrificing speed. Ruby's `Queue` is used as a replacement for communication between the workers and the broker.

The downside is that this implementation will no longer work in "brokerless" mode. It has been removed as part of this PR. Not sure if any other users outside of MD were using brokerless mode, but it should be noted.

Also, I haven't had a chance to test this after I merged with upstream, so I'll need to do that before this gets pulled in.