Term intersection requests ignore non-existent terms.

Description

Perform a term intersection such as tag=foo+bar. If foo doesn't exist then bar is queried solo, thus reducing the request to tag=bar. Intersections that include terms that do not exist should not return any terms.

I ended up using exceptions, since otherwise I would have to check for an error after each call to tranform_query(). I'm not a big fan of exception handling, but in self-contained cases like this, they come in handy.