Increase print/visit performance (#4312)
This replaces our expensive method that changes the underlying V8 shape
multiple times with a loop that preserves the identity as much as
possible.
```
⏱ Print kitchen sink document
1 tests completed.
2 tests completed.
HEAD x 9,290 ops/sec ±0.21% x 1.51 KB/op (24 runs sampled)
BASE x 2,645 ops/sec ±0.18% x 2.18 KB/op (11 runs sampled)
```
---------
Co-authored-by: Benjie <code@benjiegillam.com>