lib/git.zsh: Allow users to opt-out of git version checks

If we pre-define POST_GIT_1_7_2 then we can skip out on an extra
call to `git version`.
lib/git.zsh: Allow themes to opt-out of an expensive git status call

If neither DIRTY nor CLEAN is defined then this function is a noop,
so check up-front before making the call.

This speeds up prompts that empty out these values.
lib/git.zsh: Speed-up git_prompt_ahead()

Use the `git rev-list` plumbing instead of `git log`, which
allows us to do without grep.

Limit the history to one commit as well.
lib/git.zsh: Add git_prompt_remote_status()

This lets themes say that they are interested in whether
we are ahead, behind, or equal to a remote branch.
lib/git.zsh: Avoid calling current_branch()

The original code hard-coded 'origin' as the remote and called
current_branch() to get the corresponding remote branch name,
which may not necessarily be the correct upstream branch.

Use the the built-in @{upstream} syntax instead of calling
current_branch().

This improves performance and fixes a bug when the local and
remote branches do not have the same name.
ilb/git.zsh: Optimize git_prompt_status()

Avoid looking for dirty submodules when git >= 1.7.2 using
the --ignore-submodules=dirty option.

Make the variable naming consistent between git_prompt_status()
and parse_git_dirty().

Avoid looking at untracked files and other types of files when
the theme does not display them.

This dramatically speeds up performance.
Add davvid theme