Initial push implementation.

## Initial push implementation on top of libgit2.

#### Implementation:
I have implemented the Push logic in the `Network` namespace. The main API for push exposes a callback to report errors. There is an extension method that returns a status object at the end of the push with the results.

#### Future work:
 1. Other high level entry points to push
 2. No progress updates during push (libgit2/libgit2/issues/1178)