remote: move branch upstream deletion to use an iterator

This should make it more readable and allocate a bunch fewer strings.
remote: remove remote-tracking branches on delete

When we delete a remote, we also need to go through its fetch refspecs
and remove the references they create locally.l