Visual query builder

Still working on:

* Docstrings/better variable names
* Precompute compatibility
* Adding a setting to disable pycode altogether
Yes. Technically it defaults to `undefined`, but as long as it is falsy it doesn't make a difference.