A first working version of distributed querying.

Query ASTs are analyzed to find the largest possible subtrees that get all
data from a single driver and are not tainted by references to data from
other drivers. These subtrees are compiled by the respective drivers. The
resulting AST is evaluated with the query interpreter which delegates
evaluation of the compiled subtrees to the drivers.

There are no optimizations (e.g. evaluating subtrees in parallel, or
reordering operations for better locality) yet in this version.

- ExpandRefs has to know about the special DriverComputation nodes. Once
  all compiler phases can operate on typed ASTs, this could be done in a
  type-driven way without knowledge of any specific node types.