Use non-blocking read on subprocess stderr

Here's a proposed fix using non-blocking reads to resolve #169.  I'm not sure if this is the cleanest solution as it does add some complexity to the normal subprocess code.  Let me know what you think.
Ruby has the `loop` method that we can use to do something until specifically breaking, I would prefer to use that rather than a condition-less while.