JSONSelect JS matching tests

## Tests of the JSONSelect matcher

Types

    $ JSONSelect.match("null", null);
    [null]
    $ JSONSelect.match("array", { 1: [], 2: [] });
    [[], []]
    $ JSONSelect.match("object", [ {}, {} ]);
    [{}, {}]
    $ JSONSelect.match("string", [ "a", 1, true, null, false, "b", 3.1415, "c" ] );
    ["a", "b", "c"]
    $ JSONSelect.match("boolean", [ "a", 1, true, null, false, "b", 3.1415, "c" ] );
    [true, false]
    $ JSONSelect.match("number", [ "a", 1, true, null, false, "b", 3.1415, "c" ] );
    [1, 3.1415]

IDs

    $ JSONSelect.match(".foo", {foo: "aMatch", bar: [ { foo: "anotherMatch" } ] });
    ["aMatch", "anotherMatch"]

Descendants

    $ JSONSelect.match(".foo .bar", {foo: { baz: 1, bar: 2 }, bar: 3});
    [2]
    $ JSONSelect.match(".foo > .bar", {foo: { baz: 1, bar: 2 }, bar: 3});
    [2]
    $ JSONSelect.match(".foo > .bar", {foo: { baz: { bar: 4 }, bar: 2 }, bar: 3});
    [2]
    $ JSONSelect.match(".foo .bar", {foo: { baz: { bar: 4 }, bar: 2 }, bar: 3});
    [4, 2]

Grouping

    $ JSONSelect.match("number,boolean", [ "a", 1, true, null, false, "b", 3.1415, "c" ] );
    [1, true, false, 3.1415]
    $ JSONSelect.match("number,boolean,null", [ "a", 1, true, null, false, "b", 3.1415, "c" ] );
    [1, true, null, false, 3.1415]