tree fcae759a84e9e35e9509d6511e29dc96f97a2fd1
parent c81f1892c232230ad62877149aa9c94048b5dbdc
author eanderton <eric.t.anderton@gmail.com> 1410228508 -0400
committer eanderton <eric.t.anderton@gmail.com> 1410228508 -0400

Query interface with callback functions

* Added public Query interface
* Added filter function callback support
* Added "script" function callback support

Queries are generated via Compile(), which then may be run via Execute()
as many times as needed.  Much like compiling a regex, this is done to
elide the need to re-parse and build the funciton tree for each
execution.

The distinction between 'filter' and 'script' is borrowed from their
syntactic equivalents in jsonpath.  Right now, these accept no arguments
in the query, and instead merely pass the current node to the callback.
Filters return a bool and determine if the node is kept or culled out.
'Scripts' return a string or an in64, which is in turn used in an index
or key filter (respectively) on the current node's data.

A few callbacks are provided by default, with the ability to add
additional callbacks before calling Execute() on a compiled query.
