ShellCheck linter

@charlierudolph Wow, there were hundreds of style issues, and usage of unsafe or deprecated features in our bash code. This is now more robust code, and a lot of the issues with for example spaces went away. I'll add travis support in a separate PR to keep things manageable here (and not pester you with unnecessarily broken builds on Travis while reviewing this). 

If you feel like it, run `brew update` and `brew install spellcheck`, then 

```bash
find . -name '*.sh' -exec shellcheck {} ';'
find . -name 'git-*' -depth 1 -exec shellcheck {} ';'
```

to see the errors that this PR fixes.

I am adding the command name to feature specs in order to run all specs for a command as `cuke -n 'Git Ship'` for example. This became necessary here. 

ShellCheck is pretty cool! I have it integrated into my MacVim, so that it shows errors right when I code. Pretty cool.
How does this work? double quotes inside double quotes? Does being inside a sub-shell make it possible?