SERVER-13635 Use StringData and StringMap in DBHolder
SERVER-14584 Use correct algorithm in BtreeLogic::Builder

Both algorithms cover phases 2 and 3 of forground index building. Importantly
they both take as input pre-sorted data that has already been extracted from
the raw documents (phase 1).

OLD ALGORITHM:
  Phase 2:
    Add all keys to buckets. When a bucket gets full, create a new bucket and
    link it as the original bucket's parent pointer. At the end of the stage
    we have a linked-list of leaf nodes starting as the left-most corner.

  Phase 3:
    Walk the linked produced by phase 2, and build the layer above the leaves.
    With each bucket, except for the last (right-most), pop* its highest key
    and add it to the bucket that will be it's parent. If the current parent
    bucket is full a new one is added to higher-layer linked list as in
    phase 1. Phase 3 is repeated on the new higher-layer linked list until you
    get a layer with a single bucket which is marked as the root of the tree.

    * Importantly, popping a key is what sets the nextChild pointer on a
    bucket.  It is set to what used to be the prevChildNode of the key that is
    popped.  A major flaw of this algorithm is that because no key is ever
    popped from the root, its nextChild pointer is never filled in.

NEW ALGORITHM:
  Phase 2:
    Add all keys to buckets. When a bucket gets full, pop the highest key
    (setting the nextChild pointer of the bucket to the prevChild of the
    popped key), add the popped key to a parent bucket, and create a new right
    sibling bucket to add the new key to. If the parent bucket is full, this
    same operation is performed on the parent and all full ancestors. If we
    get to the root and it is full, a new root is created above the current
    root. When creating a new right sibling, it is set as its parent's
    nextChild as all keys in the right sibling will be higher than all keys
    currently in the parent.

  Phase 3:
    Does nothing. This may go away soon.

Non-exhaustive list of benefits to the new algorthm:
* Generates a valid btree.
* Doesn't require a second pass over all of the buckets in the index. This can
  be significantly faster for indexes that don't fit in ram.
SERVER-14584 Clean up BtreeLogic::pushBack/_pushBack naming

There are no functional changes, other than the file:line that would be
printed on invariant failures.
SERVER-13951 Use a WriteUnitOfWork for each document in update and delete
Merge remote-tracking branch 'upstream/master'