Bugfix/facter 2/fact 150 process waitall

This pull request implements an abstraction layer for how commands are run on different versions of Ruby. It also paves the way for extracting Windows specific behavior into a subclass so that we don't have to intermingle POSIX and Windows behaviors in the same method, although we're kicking that can down the road a bit.

More importantly this adds a partial resolution for FACT-150. We can now wait on a single PID when waiting for a process to exit instead of waiting on all PIDs but this can only be done on Ruby 1.9+.