Fix this by checking if the branch exists, and if not, fetch the repository.
Also add a better error message if the remote doesn't have the requested branch.
Fixes https://github.com/xamarin/xamarin-macios/issues/4308.
Put the shell code for resetting README dependencies in a shell script instead
of embedded in the Makefile so that it's easier to write, read and debug.
Also add support for switching between different remotes for README
dependencies (this means that `make reset-X` will now work fine if `X`'s
remote changed).
A side effect is that all README dependencies will now end up with a 'xamarin'
remote in addition to the 'origin' remote, but this should have no other
effect.