Over the weekend, I noticed that a relative path to `GIT_INDEX_FILE` is
interpreted in several different, inconsistent ways by git. git-annex
mostly used absolute paths, but did use a relative path in `git annex
view`. Now it will only use absolute paths to avoid git's wacky behavior.

Integrated some patches to support building with ghc 8.0.1, which was
recently released.

The gnupg-options git configs were not always passed to gpg. Fixing this
involved quite a lot of plumbing to get the options to the right functions,
and consumed half of today.

Also did some design work on [[design/external_special_remote_protocol]]
to avoid backwards compatability problems when adding new protocol
features.
