added a bunch of different colorschemes
gitgraph: reworked s:Scratch

New interface:

s:Scratch(bufname, size, cmd = '', gravity = '')

If buffer with bufname is found, it will be used, otherwise new buffer
with this name will be created.

If the buffer is opened in any window, the first such window will be activated,
otherwise new window will be opened according gravity & size parameters.

If size < 0, then new window will be created by splitting vertically
(and its width is set to -size), otherwise — horizontally (and its height
is set to size).

gravity is one of 'la', 'rb', 'tl' or 'br' for 'leftabove', 'rightbelow', 'topleft'
and 'bottomright' correspondently.

cmd is run to fill window with new content, replacing old one.
gitgraph: further abstract git commands running

Use these to run git commands:

s:GitRun(...) — run git command in current buffer, all args are glued with spaces,
s:GitRead(...) — compose git command to read git's output into current buffer,
all args are glued with spaces,
s:GitSys(...) — run git command with system() and return its output as string,
all args are glued with spaces.

All these functions use s:GitCmd(args) internally, but it's not recommended
to use this last function directly.
gitgraph: code sanitanization
gitgraph: layouts implementation
gitgraph: GitCommit implementation

Commit view implemented via GitCommit user-defined command interface:

:[0-1]GitCommit[!] ["message"]

If "!" is used, amend previous commit, if count is not zero, then
signoff commit message.

If message is provided, it will be used to edit.
gitgraph: don't resize too narrow scratch windows (size < 2)
gitgraph: use <q-bang> instead of '<bang>' in commands
gitgraph: diff view layout size set to 999 (full height)
gitgraph: silence some messages to avoid user annoyance
gitgraph: removed spare <cr>s in mappings
gitgraph: show commit options in commit window
gitgraph: avoid interactive modes (--patch option)
gitgraph: implemented GitApply & GitReset functions (WIP)

Use s:GitApply(patch, [cached]) to apply patch to worktree/index (if
cached is on) - WIP.

Use s:GitReset(commit, [mode]) to move head around.
mode := 'm' | 'h' | 's' - for merge, hard and soft resets,
if omitted defaults to mixed reset mode.

TODO: test, check options in docs one more time, move some more options
into functions' interface if necessary.
gitgraph: s:ShellJoin now accepts strings as well
gitgraph: diff view patch apply implemented

While in diff view, use 'dd' mapping to remove current removed/added line,
whole hunk or file (when cursor is in hunk or file header).

Write buffer with :w command to apply this modified patch.
gitgraph: use delete() function to remove files instead of 'rm' command
gitgraph: mappings: ,go to open git layout (git open)
added netrw specific config: grepprg

Now you can use :grep filepattern to search for file from
current directory opened in netrw window.
gitgraph: you can now jump to original file & place from diff view