Avoid constructing shell commands as strings

This sidesteps the problem of constructing shell commands as strings, fixing bundler/bundler#2433 and hopefully reducing the potential for quoting/escaping bugs in the future.

[Here](https://gist.github.com/AndrewKvalheim/37a1bcf4f652a5ca9b91) are two failing test cases that this should resolve. I'm not sure how to integrate them into the repo as all tests in master currenty fail on my machine. (I worked against v1.0.9 and rebased to master.)