fix semantics of referencing an expr

Previously a reference expression would fail if it referred to an
expression. This was so that eventually the other expression would
evaluate first, and the reference would eventually be resolveable.

This had the unfortunate side-effect that a reference used in an 'or'
expression would cause the fallback to be chosen if the reference was
not immediately resolveable (i.e. it was referring to an expression).

A reference now evaluates to itself and reports the evaluation as
successful. The evaluation will mark this pass as 'modified', and the
next pass will try to resolve it again.