Reduce memory allocations when applying ops.

- Change compareDottedFieldNames to use StringData. This avoids the
  need for callers to allocate a std::string if they want to compare
  char*'s, and avoids doing allocation when we do a substr() to
  compare individual components of the dotted path.

- In ModSetState::createNewFromMods, just compare the suffixes of the
  update paths we're working with, rather than allocating memory to
  construct the whole path from the root, which we already know to be
  identical.