branch: move from foreach to an iterator

Create a git_branch_iterator type which is equivalent to the foreach but
lets us write loops instead of callbacks.

Since the introduction of git_reference_shorthand(), the added value of
passing the name is reduced.
Merge pull request #1938 from libgit2/cmn/branch-iterator

branch: move from foreach to an iterator