Add tab completion for git commands.

Adds a `Completer` class which provides tab completion for git commands. As
with the rest of the code so far, this is a proof of concept spike with no
tests.

Completion for commands (in the few minutes I've been using it) is less
useful that I imagined, because of the huge number of seldom-used git
commands that clutter up the namespace. When using git from bash, I use
shell aliases for my commonly used commands to avoid this problem (gc, gs,
etc.).

Hopefully this code will provide a useful template for branch/tag/remote/...
identifier completion, which is much more useful.