Fixed git stash alias (gsta) not correctly detecting zsh shell for git
version guessing.
Set default options to automatically rebase on pull, automatically prune
on fetch, and automatically stash and squash on rebasing.
Also made git diff highlight moved code.
Changed url substitution to only work on pushing, so that we can always
make use of ssh keys but things like pulling through rust's cargo still
work.
Default to verbose diffs, even though we also set it in the alias.
Added general usage information. Made sure gitignore api is never called
without any arguments.
Made script fzf aware -- if it finds fzf it can be invoked without
arguments, if it does not it will display usage information instead.
The only file left in $HOME is .zshenv, which sets up zsh to source everything from XDG_CONFIG_HOME/zsh.
Shell files are split into sh and zsh directories, for global assignments (which should be posix compliant, work on any posix shell) like environemnt variables, xdg vars, and global aliases. zsh contains zsh specific customization (prompt customization, plugin loading, zsh completions).
Zsh initialization will pull from sh directory first, loading the respective mirror to its startup file (`.zprofile` loads `sh/profile` and `profile.d/*`, `.zshenv` loads `sh/env` and `sh/env.d/*` and `zsh/env.d/*`, `.zshrc` loads `sh/alias`, `sh/alias.d/*` and `zsh/alias.d/*`)
Once all is done, it will have loaded both global variables, aliases and settings, and zsh-only specifications. Other stow modules, if they want to add shell functionality, can include their aliases and functions in one of the above directories to automatically be picked up by zsh.
Added global git config file, following XDG specifications (putting it
under `XDG_CONFIG_HOME/git/config`).
Adding a small improvement to default dot session for tmux, so that its
log watcher now shows all refs and remote refs.