Add Rugged::Repository#push.

Also add Rugged::Repository#push test cases.
Return a hash instead of true/false.

Removes the need to pass a block.
Use `rb_raise`.
Remove push options.
Fix some possible memory leaks.
Fix another possible memory leak.
Repository#push should now be leak-free.
Don't use `rb_scan_args` for a fixed arg list.
Fix an issue where the same refspec would be pushed multiple times.
The loop condition will break on error anyway.
No need to set push options if we keep the defaults untouched.
Remove unused condition.
Change the exception message to sound less weird.
Add Rugged::Remote#push.
Add newlines before EOF.
Cosmetic changes.
Change `git_error`to `error`.
Use `NIL_P` instead of comparing with `Qnil.`
Release the GVL when pushing.

The GVL is only released if we're running on Ruby 1.9+ and libgit2 was
actually built with threadsafety.
Reference names should always be UTF-8.