Tests that console logging dumps proper messages.

console-dir-es6.js:20 Object
    a: 1
    Symbol(): 2
    Symbol(Symbol.iterator): Symbol(foo)
    Symbol(a): 3
    Symbol(a): Symbol(Symbol.iterator)
    __proto__: Object
console-dir-es6.js:23 Symbol()
console-dir-es6.js:27 Map(1)
    [[Entries]]
        0: {Object => Object}
    size: (...)
    __proto__: Map
console-dir-es6.js:27 WeakMap
    [[Entries]]
        0: {Object => Object}
    __proto__: WeakMap
console-dir-es6.js:31 Set(1)
    [[Entries]]
        0: Object
    size: (...)
    __proto__: Set
console-dir-es6.js:31 WeakSet
    [[Entries]]
        0: Object
    __proto__: WeakSet
console-dir-es6.js:39 Set(1)
    [[Entries]]
        0: Set(1)
    size: (...)
    __proto__: Set
console-dir-es6.js:42 WeakMap
    [[Entries]]
        No properties
    __proto__: WeakMap
console-dir-es6.js:50 MapIterator
    [[Entries]]
        0: Object
    __proto__: Map Iterator
    [[IteratorHasMore]]: true
    [[IteratorIndex]]: 0
    [[IteratorKind]]: "keys"
console-dir-es6.js:51 MapIterator
    [[Entries]]
        0: Object
    __proto__: Map Iterator
    [[IteratorHasMore]]: true
    [[IteratorIndex]]: 0
    [[IteratorKind]]: "values"
console-dir-es6.js:52 MapIterator
    [[Entries]]
        0: {Object => Object}
    __proto__: Map Iterator
    [[IteratorHasMore]]: true
    [[IteratorIndex]]: 0
    [[IteratorKind]]: "entries"
console-dir-es6.js:50 SetIterator
    [[Entries]]
        0: Object
    __proto__: Set Iterator
    [[IteratorHasMore]]: true
    [[IteratorIndex]]: 0
    [[IteratorKind]]: "values"
console-dir-es6.js:51 SetIterator
    [[Entries]]
        0: Object
    __proto__: Set Iterator
    [[IteratorHasMore]]: true
    [[IteratorIndex]]: 0
    [[IteratorKind]]: "values"
console-dir-es6.js:52 SetIterator
    [[Entries]]
        0: {Object => Object}
    __proto__: Set Iterator
    [[IteratorHasMore]]: true
    [[IteratorIndex]]: 0
    [[IteratorKind]]: "entries"
console-dir-es6.js:90 Array(27)
    0: class 
    1: class classWithWhitespace
    2: class FooClass
    3: ƒ jump(x)
    4: class BarClass
    5: class BarClass2
    6: class BarClass3
    7: _ => { return 1 }
    8: (x) => { return 1 }
    9: (x, y, z) => { return 1 }
    10: ({}) => { return 1 }
    11: ([]) => { return 1 }
    12: () => { return "short" }
    13: () => {…}
    14: (...x) => { return 1 }
    15: (x, y, ...z) => { return 1 }
    16: ƒ (...x)
    17: ƒ (x, y, ...z)
    18: ƒ ({a})
    19: ƒ ([a])
    20: ƒ ({a, b})
    21: ƒ (...{a})
    22: ƒ (a = (1), b)
    23: ƒ (a = {x: (1)}, b)
    24: ƒ (a = (x) => { return 1 }, b)
    25: ƒ ({a: b})
    26: ƒ (c = ")", {a: b})
    length: 27
    __proto__: Array(0)
console-dir-es6.js:98 Array(4)
    0: badArrow(x = a => {…}
    1: ƒ (a = ")
    2: ƒ (a = function()
    3: ƒ (a = class{ constructor()
    length: 4
    __proto__: Array(0)

