Support bare repositories.

Assume a bare repository if a .git/ subdirectory does not exist.
Add a default path for Git binary.
Default start commit to merge-base w/ HEAD.

Generally this will result in a diff including all changes since the
branch was created.  This seems more useful than just showing the last
commit.  But if only the last commit is what is wanted, this is easy to
specify (append a '~' to the end ref.)  Explicitly specifying a
merge-base is not so convenient, thus making this default a better
value.
Use short SHA1 as prefixes.

Using refs as prefixes makes the diff potentially unsuitable for
patch(1) since a ref can contain forward slashes.  Use abbreviated SHA1
values.