Initial version of subselectors support for $reserved elements in GSS engine. E.g. (:: .something)[x] or  (::parent .something)[x]

It adds a root.spawn() hook that is called whenever spawn is called in  _get$. If $reserved element has optional 2nd subselector argument, it spawns a new query observer, independent of $reserved query. It recursively calls .spawn() for all found nodes to combine a list of commands.

Todo: 
- Destroy subqueries
- Add tests for nesting (::pseudo selector) into a rule with multiple selectors.
- Add tests for (::scope selector)

Gotchas:
- I had to bump margin_of_error because of new async test in command-nested-rules. It cleans it up, but not when the test is running.
Remove some things compiled into gas
Remove offensive semicolons.
More semicolons, thanks Travis
Fix broken comment
Little cleanup
Cleanup subtrackers and subqueries
Remove unused var
Remove unused local
Rename dicts
Rename some locals
Rearrange some lines
Extract separate method
use is -1
Add comment
DSL for test scenarios
Add test for nested rules
More lifecycle tests for nested rules
Add Engine.getQueryScopeById to let commands scope their stuff to various elements
Destroy and unbind subqueries