Refactor to use `child_process.spawn()` instead of `child_process.exec()`.

The benefits:

* Makes the code simpler by removing unnecssary function calls and string <--> array conversions
* Preserves colorized output from Git (if configured and supported)