Visual query builder

Still working on:

* Docstrings/better variable names
* Precompute compatibility
* Adding a setting to disable pycode altogether
Instead of just strings, the `<selecter>` now selects among arbitrary objects as long as they have a `name` property. `name` is what shows up in the select box list. Therefore, when the value changes, we get the name of the selected option. Then we have to use that name to look up the proper object where `object.name == selectedName`.

While it is true that this is an O(N) solution, it is difficult to use a dictionary format instead of a list because that is how you specify optgroups. My argument is that if you have a `<selecter>` with so many items that O(N) vs. O(1) matters, then it's not going to render without crashing the browser anyway. But maybe I am just making excuses.