Remove -b from default rspec options

RSpec seems to be much better at filtering nowadays and the extra lines
are a PITA in development.
Run timeout tests without a subshell

/bin/sh on Ubuntu is dash, which does not support bash's behavior of
using exec to run a command (instead of fork) when possible. This means
that, when given a single string command, instead of an array of command
plus arguments, the process created by fork/exec is dash, and the ruby
program is a child process of dash. When shellout signals the child to
exit after a timeout, it will signal dash instead of the ruby program.

To avoid this issue, the command needs to be given as an Array to avoid
creating a subshell.
Run commands with unique pgid to improve timeout cleanup

To ensure that all child processes are properly signaled to exit before
forcibly killing them, use `setsid()` in the child process to give the
child (and any grandchildren it might create) a new and unique process
group. If the command times out, kill and reap the entire process group.
Always send KILL to process group

There is not a good way to reliably detect whether all grandchildren
have exited after sending a TERM to the process group; if the child has
correctly exited, grandchildren (which may be unresponsive) will have
been adopted by init (ppid == 1) so the parent cannot wait() on them. To
ensure no stuck grandchildren are left, send a KILL to the process group
after allowing the processes time to clean up.
Merge branch 'track-child-by-pgid'

* Closes https://tickets.opscode.com/browse/MIXLIB-24
* Expand timeout process cleanup to include grandchildren.