barc gc: refactor, extract method _prune_branches

Test Plan: $ ./precommit.sh
barc gc: replace dry-run with interactive

Don't modify the git fetch config - when the landing log saturates at
1000 entries then it's going to add maybe ~100K overhead to most fetches
on a busy project.

Instead prompt the user as to whether they want to fetch the landing log
or not.

Replace '--dry-run' option with '--interactive', as it has proven
annoying to seperately preview and perform - this is because you are
prompted to update the landing log each time.

Provide options '--update', '--no-update' to prevent the update
prompting, making the command usable in scripts in some circumstances.

Test Plan:
poke, accept, gc in
$ ./testbed/arcyd/test_shell.sh
$ ./precommit.sh
barc gc: refactor, extract branch printing method

Test Plan:
poke, accept, gc in
$ ./testbed/arcyd/test_shell.sh
$ ./precommit.sh
barc gc: fix first-time fetch, formatting

Fix the first-time fetch command.

Fix current branch check to fire only if we're actually trying to remove
the branch.

Fix the order of some prints.

Test Plan:
poke, accept, gc in
$ ./testbed/arcyd/test_shell.sh
$ ./precommit.sh