store_lookup: Catch invalid values when parsing a matcher.

Added a unit-test exposing the segfault we would have seen previously.
store, frontend: Let lookups support arbitrary expressions for comparison.

… rather than simple values.

When comparing object names, the expression has to evaluate to a (constant)
string but conditional attribute comparison supports arbitrary expressions.

Expressions are only evaluated when using them during a comparison even though
we only support constant expressions so far. This will be optimized in the
future.