Add functionality for managing refs through the GitClient interface.

It mimics the functionality available for git tags: creation, existence-testing,
deletion, and lookup. It also mimics the behavior: names have spaces replaced
with underscores, creation and update are combined into a single forced
operation, and refs will refer to HEAD.

Unlike tags, refs are bare-boned, and do not include any attached message.
Merge pull request #137 from nickgorski/master

Add functionality for managing refs through the GitClient interface.
Merge commit '1044437145132de95151f8a9241bd3fdb70565c9' into HEAD