remove placeholder hack
tests: ignore the structure of query_components
tests: add tests that don't ignore the structure of query_components
distinguish between 'static' and 'dynamic' query terms

'static' terms can be processed through simple database queries, whereas
'dynamic' terms require data to be fetched at processing time (slow).
We use 'static' terms to reduce the set of posts that we need to subject
to further checking.