Initial support asynchronous update

 - Drop Emacs 23 support
   It is confused if `let` and `lexical-let` are used together.
   So I use 'lexical-binding'.

 - Use cl-lib instead of cl

 - Fix for byte-compile warnings

 - Remove needless global variable `git-gutter:base-file-name`

 - Don't use '-shell-command' function
   It is better to use 'call-process' instead of
   'call-process-shell-command'.

 - Remove needless customize variable
   And remove 'git-gutter:diff-option', because git-gutter does not work
   well if user specifies unexpected option.
Update travis config
move test file in test/ directory
Improve for tramp mode

- Don't require tramp. It is not necessary for people who does
  not use tramp
- Use process-file and start-file-process instead of call-process
  and start-process
Remove needless functions and variables
Kill process buffer when buffer is killed
Restore git-gutter:diff-option

Because a few people use this option.

See also
  https://github.com/search?q=git-gutter%3Adiff-option&ref=cmdform&type=Code
Update support version
Use custom-set-variables instead of setq

And remove needless information
Remove focus-in-hook

It should not be default update hooks, because it cannot be used
in terminal-mode.

And I typoed :(
Add customize variables about updating diff info
Set window margin before command is completed
Fix case that buffer is switched before command is completed
Update comment to git-gutter
Re-factoring

- reduce local variable
- separate function
- don't calculate twice
Improve clearing old diff information

It should be cleared just before updating diff information.
Fix doc-string
Refactoring
Remove MacOSX notes

It is no longer occurred because we never use
`window-configuration-change-hook`.
Fix for older Emacs(<= 24.3)

On older Emacs, it raises exception when `(process-live-p nil)` is
evaluated.