bin/git-up: Rewrite to support 'git fetch --all --prune'
* Use "[git fetch] --all --prune" (if no given <repo>+<head>) to
fetch changes from all remotes and prune nonexistent branches.
* Use "[git merge] --ff-only" to ensure we only do fast-forward
merge from `git pull`.
* Grab HEAD before and after pull to see if changed. Previous code
relied on HEAD@{1} (i.e. git reflog) which is a false-positive if
HEAD didn't actually change during pull.