code: function explodePath( path ) {
      var items = path.split( '/' );
      return items.map(function( itm ) {
          itm = itm.trim();
          if( itm == '*' ) return buildAny();
          if( itm == '**' ) return buildAll();
          if( itm.charAt(0) != '[' ) {
              // Not a test.
              var idx = parseInt( itm );
              if( isNaN( idx ) ) {
                  return buildAtt( itm );
              }
              return buildIdx( idx );
          }
          var tst = {};
          while( itm.length > 0 ) {
              var m = itm.match(rxTest);
              if (!m) break;
              var key = m[1];
              var val = m[2];
              if (val) {
                  val = val.substr(1);
              }
              tst[key] = val;
              // Go to next test, if any.
              itm = itm.substr( m[0].length );
          }
          return buildTst( tst );
      });
  }
docs: Transform `"a/*"` into `[["att", "a"], ["any"]]`.
  Transform `"bob/** /[youp]"` into `[["att", "bob"], ["all"], ["tst", {youp: undefined}]]`.
  Transform `"a/b"` into `[["att", "a"], ["att", "b"]]`.
  Transform `"a/4"` into `[[att: "a"], [idx: 4]]`.
  Transform `"[x=toto]"` into `[["tst", {x: 'toto'}]]`.
  Transform `"[x=toto][y=foo]"` into `[["tst", {x: 'toto', y: 'foo'}]]`.