Preserve bookmarks across "hg rebase --keep --collapse", and destroy them before "hg strip/prune"
Preserve bookmarks across "hg rebase --keep --collapse", and destroy them before "hg strip/prune"

Summary:
See PHI1808. Currently, "arc land <some bookmark>" does not destroy the bookmark in Mercurial. There are three issues here:

  - "hg rebase --keep --collapse" moves bookmarks to the rewritten commits;
  - "hg strip" moves bookmarks backwards;
  - "hg prune" moves bookmarks backwards.

To get around "hg rebase", save and restore bookmark state.

To get around "hg strip" and "hg prune", explicitly destroy bookmarks pointing at commits before we strip/prune those commits.

Test Plan:
  - Ran "arc land <some bookmark> --trace". Saw arc reset the bookmark position after rebasing, and destroy the bookmark explicitly before stripping.
  - When the workflow exited, saw no more bookmark (previously: bookmark existed and pointed at a possibly-intermediate state).

Differential Revision: https://secure.phabricator.com/D21397

phacility/arcanist,codelabs-ch/arcanist,phacility/arcanist,codelabs-ch/arcanist,Khan/arcanist,phacility/arcanist,codelabs-ch/arcanist,codelabs-ch/arcanist,Khan/arcanist,Khan/arcanist,phacility/arcanist,phacility/arcanist,Khan/arcanist,codelabs-ch/arcanist