First pass at worker rewrite.

In particular, it now has a single parent process managing many children.
Also, each child does many jobs serially and new children are only spawned
to replace failing children.
Supports catching lock lost in workers
Switching to fork do, because Ruby is crazy.
log is an instance variable
unfocus a test
when using ShuffledRoundRobin reshuffle the queue list in the child after a fork and before entering the work loop.
Add a few more log lines.
Prevent the ole thundering herd problem. Provide an optional max_sleep_interval which, on startup, will force a brand new child to sleep anywhere from 0 to max_sleep_interval. It defaults to 10.0s.
move (and rename) with_worker into a separate module and file so it can be reused better.
move the subprocess_worker_running to a location so that outside gems can use it
Update the rspec gems and fix test warning/deprecation messages