git_prompt: Reorder show_upstream to match original

This makes it easier to see if there are any changes.  Also it puts
all of the extra functionality together instead of mixed in with
everything else.
git_prompt: Merge operation, branch, and bare helpers

Operation and branch detection are merged together in the original
because branch information may come from different places depending on
the operation.

Merging the bare helper in helps avoid testing for the working
directory and bare status twice, both of which requires forking a new
process.

Also helps the code match the original more, which will make adding
new features easier.
git_prompt: Add branch information for rebase
git_prompt: Update documentation

* The original __git_ps1 function has split from the rest of
  git-completion as of git.git af31a45

* Use the description for GIT_PS1_DESCRIBE_STYLE (added in git.git
  50b03b0) for __fish_git_prompt_describe_style

* Update the description of __fish_git_prompt_showupstream to include
  the meaning of '=' based on git.git f9db192: "Improve the
  description of GIT_PS1_SHOWUPSTREAM"

* Note that the PROMPT_COMMAND versions of the command with extra
  arguments don't work, in case someone used to the bash version is
  looking for it.

* Note that I am updating the script so Kevin Ballard doesn't get
  blamed for anything I break.
git_prompt: Expand color/character explinations

This will be getting more complicated when I add the showcolorhint
option from git.git.
git_prompt: Add defaults to set_color

This is mostly useful for the next commit that will have different
colors default to different values, but it has one immediate change:
all __fish_git_prompt_color_* variables now default to
__fish_git_prompt_color instead of to nothing, as they used to.
git_prompt: __fish_git_prompt_showcolorhints

Based on GIT_PS1_SHOW_COLORHINTS, it introduces more color by default
and also changes the color of the branch name based on if it is a real
branch or detached.

Based on the following commits from git.git:

9b7e776: show color hints based on state of the git tree
9b3aaf8: Fix up colored git-prompt
76c36c0: coloured git-prompt: paint detached HEAD marker in red
git_prompt: add bash.showUntrackedFiles option

The option was added in git.git 66cb5d4, so pay attention to it like
we do the other bash.* options.
git_prompt: use REVERT_HEAD

git revert was taught to revert multiple commits, and it stores it
branch information in REVERT_HEAD just like the other *_HEAD files.

based on git.git 3ee4452: bash: teach __git_ps1 about REVERT_HEAD
git_prompt: show where rebase is at when stopped

Adds a progress indicator to the rebase messages. (e.g. |REBASE 2/5)

based on the git-prompt portion of git.git b71dc3e: "bash-prompt.sh:
show where rebase is at when stopped"
git_prompt: Add __fish_git_prompt_char_stateseparator

Unlike the rest of the __fish_git_prompt_char_* variables, it does not
have its own color because the most likely values are a space and
nothing.

based on git.git 15a54fb: prompt: introduce GIT_PS1_STATESEPARATOR
git_prompt: Display head for simple rebase

based on git.git 1306321: "prompt: fix for simple rebase"
git_prompt: print unique detached HEAD abbreviated object name

Simply using cut duplicates (poorly) `git rev-parse --short`

This also restores the ... printed after the abbreviation which
__fish_git_prompt had been missing.

Based on git.git e8f21ca: "bash prompt: print unique detached HEAD
abbreviated object name"
git_prompt: remove __fish_git_prompt_git_dir

It's a one line function called in a single place.  I suspect it only
existed because the bash equivalent __gitdir existed (it was more
complex), but that function no longer exists either, as of git.git
511ad15: "bash prompt: run 'git rev-parse --git-dir' directly instead
of __gitdir()"
git_prompt: Call `git rev-parse` less often

The code invoked `git rev-parse` several times when the required
information could be collected all at once.

This is based on the following commits from git.git:

efaa0c1: bash prompt: combine 'git rev-parse' executions in the main code path
e3e0b93: bash prompt: combine 'git rev-parse' for detached head
0f37c12: bash prompt: use bash builtins to check for unborn branch for dirty state
dd0b72c: bash prompt: use bash builtins to check stash state
git_prompt: don't save output of ls-files for untracked files

based on git.git 14d7649: "bash prompt: avoid command substitution
when checking for untracked files"
git-prompt: Ensure repaint on all char and color changes

A few characters and colors got added without being added to the event
list for repainting.

Also sort and re-align list of characters in validate_chars.
git-prompt: Move status_order to near informative_status

It's easy to forget the definition of ___fish_git_prompt_status_order
when there are dozens of lines between where it is defined and where
it is used.
git-prompt: Document informative_status changes