Refactoring conditions. The end goal is to re-introduce an incremental query
cache. But the query cache has to happen at the condition level (not the index
level as in the previous implementations). Therefore, the conditions need to
take over the first-class citizen role previous held by indexes. Largely, this
means a condition holds a bit more state.
fixed union
fix sets
remove ddebug