Improve remotes

 * Added:

```ruby

Rugged::Remote.add(repo, name, url)
Rugged::Remote.names(repo)
remote.url=
remote.push_url
remote.push_url=
remote.fetch_refspecs
remote.push_refspecs
remote.add_fetch
remote.add_push
remote.clear_refspecs
remote.save
remote.rename
```

 * ```update_tips!``` now accepts a callback
 * `Rugged::Remote.each` now yields `Rugged::Remote` instead of remote's name 
 * docs
 * tests

I don't really like how the ```update_tips!``` with callback turned out. Is it ok to return a hash with the callback data every time?

Also, ghetto clone:
``` ruby
repo = Rugged::Repository.init_at('.')
remote = Rugged::Remote.add(repo, 'origin', 'https://github.com/libgit2/rugged.git')
remote.connect(:fetch) do |r|
  r.download
  r.update_tips!
end

repo.reset('origin/master', :hard)
```