bash: Update custom Bash prompt
bash: Update custom Bash prompt

Use git commands to directly enquire about the state of the working
tree. Where possible, git plumbing commands are used. In some instances,
git porcelain commands are used (where plumbing commands fail on freshly
initialized repos) but there is no reliance on string data in their
output.

The previous method relied on specific strings in the output of commands
(`status` and `branch`) which was very unreliable. Those commands make
no guarantees about the nature of the text they return and should not be
used for scripting purposes.

Enhancements included in this update:

* Display the short SHA of a commit when there is no branch name.
* Display the `$` character when there are stashed changes.

codfish/dotfiles,nick-thompson/dotfiles,seiryu9/dotfiles,micahwood/linux-dotfiles,jmyser/dotfiles,lgaechter/dotfiles,micahwood/linux-dotfiles,senorflor/linux-dotfiles,bronxct1/dotfiles,sdillingham/dotfiles,marc0uk/dotfiles,SBoudrias/dotfiles,Stubby/dotfiles,SiTaggart/dotfiles,senorflor/dotfiles,bronxct1/dotfiles,micahwood/linux-dotfiles,micahwood/linux-dotfiles,intiocean/dotfiles,pmacom/dotfiles,seiryu9/dotfiles,saclark/dotfiles,micahwood/linux-dotfiles,necolas/dotfiles,codfish/dotfiles,Gastove/dotfiles,pertoyra/dotfiles,Stubby/dotfiles