toString() {
    const hiddenDetails = weakmapGet(hiddenDetailsMap, this);
    if (hiddenDetails === undefined) {
      return '[Not a DetailsToken]';
    }
    return getMessageString(hiddenDetails);
  }
Give detailsTokens a toString behavior. To minimize the overhead of
creating new detailsTokens, we do this with an
inherited `this` sensitive `toString` method, even though we normally
avoid `this` sensitivity. To protect the method from inappropriate
`this` application, it does something interesting only for objects
registered in `redactedDetails`, which should be exactly the detailsTokens.

The printing behavior must not reveal anything redacted, so we just use
the same `getMessageString` we use to construct the redacted message
string for a thrown assertion error.