config: remove the refresh function and backend field

We have been refreshing on read and write for a while now, so
git_config_refresh() is at best a no-op, and might just end up wasting
cycles.
remote: accept a repo and name for renaming

Remote objects are not meant to be changed from under the user. We did
this in rename, but only the name and left the refspecs, such that a
save would save the wrong refspecs (and a fetch and anything else would
use the wrong refspecs).

Instead, let's simply take a name and not change any loaded remote from
under the user.
Merge pull request #2646 from libgit2/cmn/remote-rename

remote: accept a repo and name for renaming
Merge pull request #2638 from libgit2/cmn/config-refresh-remove

config: remove the refresh function and backend field
Fix test repo dir not deleted after running
tests: fix leak
Merge from 2660
Clean up various compiler warnings
Clean up some memory leaks
Cleanup memory leak in ssh transport
config test: clean up memory leak
clone::local test: isalpha -> git__isalpha
global: clean up openssl_locks on shutdown
submodule test: free submodule
mwindow: clean up pack map at shutdown
revwalk::mergebase test: free memory
iterator: free paths when skipping them