Branch type and related methods.

- Repository has two new properties: branches and remote_branches. Using
  subscripting you can obtain references to the named branches.
- Repository has a new method create_branch. With a name and a Commit object,
  it creates a branch from the given commit.
- The Branch objects are a subtype of Reference, and should support all of the
  methods of Reference.
- Additionally Branch has new methods (delete, move and is_head), and new
  properties (name, remote_name, upstream and upstream_name).
- Two new exposed constants: GIT_BRANCH_LOCAL and GIT_BRANCH_REMOTE.
- Every reference stores now also a pointer to its owner repository.
- Test for all those new methods.