Fix bug where GitGutter wasn't called on buffer write.

This affected people with the default configuration but not those where
`BufEnter` was turned off.

This problem was introduced by the last commit.
Speed up work done on `FocusGained`.

When vim-gitgutter is configured to update on `BufEnter`, which is the
default, we only need to update visible buffers on `FocusGained`.
Other buffers will be updated as and when the user enters them.
Customisable signs' symbols.
DRY configuration.
Remove unnecessary string concatenation.
Allow configuration of extra arguments for git-diff.
Better filename resolution.
Make signs optional (on by default).
Whitespace.
Check for grep

Fixes #72
Update only visible buffers on `FocusGained` and `TabEnter`.
Make grep optional instead of required.

When grep is available we use it for efficiency.  When it's unavailable,
we filter in Vimscript.
Allow plugin to bypass any alias for grep.

This is an opt-in configuration.
Prevent clearing highlight definitions when colorscheme changed
Always remove the sign column when disabling gitgutter.

Previously with `gitgutter_sign_column_always = 1` the sign column would
remain after calling `GitGutterDisable`.  Now the sign column is always
removed when disabling gutter.
Always prevent flicker.

Previously flicker was prevented only when the sign column was
always present.
Use correct filename in auto commands.

This problem was revealed when using BufExplorer:

- Open vim with two files: `$ vim a.txt b.txt`
- Type `\\` to open BufExplorer.
- Press <enter> on `b.txt`.
- Vim shows `b.txt` as expected.
- Type `\\` to open BufExplorer.
- Press <enter> on `a.txt`.
- Expected: Vim shows `a.txt`.
  Actual Vim shows `a.txt`, `b.txt`, `a.txt`.

I.e. the first invocation was fine but all subsequent invocations
rapidly flicked through <new file>, <old file>, <new file>.
Revert "Use correct filename in auto commands."

That commit prevented gitgutter correctly activating on its first run.

This reverts commit 25d428c3900d8f45d2b3f771a734033fb0104262.
Simplify tradeoff between accuracy and speed.

If the plugin slows down your Vim too much, you can have it run less
often by setting `g:gitgutter_eager = 0`.

This replaces the former options `g:gitgutter_on_bufenter` and
`g:gitgutter_on_focusgained`.
Clarify that plugin works with saved buffers.