Reject the promise for a command if an error event is fired

If the eventEmitter for the spawn command emits an error we should reject the promise so it can be handled gracefully rather than just dying with unhelpful messages like

```
events.js:72
        throw er; // Unhandled 'error' event
              ^
Error: spawn ENOENT
    at errnoException (child_process.js:980:11)
    at Process.ChildProcess._handle.onexit (child_process.js:771:34)
```