Use `Exec` except Windows for the last command run in the commands chain

This is to avoid the interrupt/pagination issues like https://github.com/github/hub/issues/708. Note that `exec(3)` is not
available on Windows: http://golang.org/src/pkg/syscall/exec_windows.go#L339. A fall to `spawn(3)` is used in this case.

This PR also includes some refactorings on method names to avoid confusion.