Serialize 'expected' and 'actual' in isolation with regards to already seen values
This fixes an issue in the test runner output:
const array = [1, 2, 3];
assert.deepEqual({array}, {array, other: 123});
If this assertion is made during a test, the "expected" output will be correct while the "actual" output will contain the string "Circular":
expected:
array:
0: 1
1: 2
2: 3
other: 123
actual:
array: <Circular>
With the change presented here, each output is produced in isolation from each other such that only circular references within each output will be shown as "Circular".