SHAMap performance (RIPD-434)

Commit from previous pull request with updates thanks to suggestions given in that pull requests. Updates and bugfixes to address the missing node bugs:

More separation between snapshot unsharing logic and modified node flushing logic.

Simplify descend* functions so that they no longer modify SHAMapNodeIDs. (They were too tricky to use because it wasn't clear which functions modified SHAMapNodeIDs and whether you were supposed to pass the parent or child ID.0


Right, I wasn't thinking so much about this particular method, more about interfaces that use bools to turn features on and off.  Using an enum is a) slower to code, but b) is easier to read at the call site and c) adds type safety,  Just a bias of mine that's getting reinforces as I work on the rippled code base.