Store more than just dir in s:temp_files

- Also store 'args', the git arguments used to generate the temp file
Look for $GIT_DIR and $GIT_WORK_TREE

There are rare situations where a user has manually specified what they
wish to use as their work-tree directory, and even rarer situations
where the user wishes the Git directory to be customized. In the case
the user has set these using environment variables, vim-fugitive takes
advantage of these settings in order to set up.

Note that git-config(1) allows setting the work-tree and Git dir in
a number of ways (see the core.worktree) setting. This change only
respects the environment variable method, not the config file method.
Place extra emphasis on a clean history
Improve heuristics for status section detection

Closes #440.
Fix version regex
Check `&diff` first in fugitive_diff autocmds

This avoids calling `s:diff_window_count` in the common (non-diff) case.
Turn off swap files in all URL buffers

References #202.
Improve keepjumps situation
Support :Gcommit --patch

Closes #452.
Accidental omission from previous commit
Set winfixwidth

Closes #453.
Work around more 'wildignore' silliness
Revert "Work around more 'wildignore' silliness"

This reverts commit 3bfa0a27253d12a49331d0d9baa8d1210a816a8d.

Closes #457.
Add missing aborts
Work around issue using buffer number rather than name

Observed on the OS X Mavericks install of Vim 7.3.
Don't blow up on vanishing HEAD

Closes #459.
Cater for powershell as well as cmd for windows users
Don't blow up on type checking empty buffers

Closes #462.
Revert "Work around issue using buffer number rather than name"

This reverts commit d6540b2588044f4028f6323e421e2e90116c8af7, which
caused all sorts of breakages with buffer names with brackets in them.
This was greatly exacerbated by airline.vim setting an erroneous
b:git_dir in plugin buffers based on the current working directory.

Closes #464. Closes #463. Closes #461.
Make commands available in command line window

Closes #325.