Eng 7046 min max inline string

So here's what I think this method does:
- Clones the `StringRef` instance with backing storage from a different pool.  Seems like some of this code might be nice to put into a new method of `StringRef`, like `cloneIntoDifferentPool` or something like that.
- Makes the `NValue` instance point to the new `StringRef`
What happens to the original `StringRef`?  I guess the caller uses this method when we want a value to persist after the pool from which it was allocated is destroyed.