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.