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.
Fixed ambiguous ls-remote with refs/heads/...

This is the smallest possible change to solve the
issue of CI builds being triggered again and again.
ls-remote will always be definite when "refs/heads/<branchName>"
is used as branchSpec.

All other issues tried to solve with Pull Request
https://github.com/jenkinsci/git-client-plugin/pull/129
are still open. But using refs/heads/ would already solve
the CI issue.
Added tests, refactored and improved branch spec normalization
Fixed refs/remotes/ handling

...and refs/tags/ (to be discussed - but does not harm).
Fixed ambiguous ls-remote with refs/heads/...

This is the smallest possible change to solve the
issue of CI builds being triggered again and again.
ls-remote will always be definite when "refs/heads/<branchName>"
is used as branchSpec.

All other issues tried to solve with Pull Request
https://github.com/jenkinsci/git-client-plugin/pull/129
are still open. But using refs/heads/ would already solve
the CI issue.
Added tests, refactored and improved branch spec normalization
Fixed refs/remotes/ handling

...and refs/tags/ (to be discussed - but does not harm).
Do not change name of protected method
Remove a purely whitespace modifying change
Update LegacyCompatibleGitAPIImpl compatibility comments

The LegacyCompatibleGitAPIImpl behaviors need to be retained so that
we don't break legacy use models.
Merge pull request #137 from nickgorski/master

Add functionality for managing refs through the GitClient interface.