Remove #connect, #connected?, #disconnect, #update_tips! from Remote.
Change Remote#ls to connect and disconnect the remote automatically.
Implement Remote#fetch and update Repository#clone_at.

This moves and re-uses most of the existing Repository#clone_at option
handling code for Remote#fetch. It also implements correct handling of
the :progress and :update_tips callbacks.
Add a test for the new Remote#fetch.
Add tests for the :update_tips callback of Repository#clone_at.
Allow specifying an alternative list of refspecs to use in Remote#fetch.
Fix a doc typo.
Add a convenience Repository#fetch method.
Add a fetch example.
Use the new `git_remote_dup` to simplify the code for `Remote#fetch`.
Allow passing a remote name to `Repo#fetch`
Move `Repository#push` to `Remote#push` and align it with `Remote#fetch`.

`Remote#push` now also takes an optional `options` hash that can
contain the credential or credential hash to use for pushing.

`Repository#push` forwards to `Remote#push`.
Don't special case the handling of errors returned by git_push_finish.
Support custom reflog message/signatures for `Remote#push` and `Remotde#fetch`.