Fixed a couple of issues with they way matchers affect context.

* Arguments to matchers were evaluated in the matcher's context
rather than the caller's, which broke arguments that weren't
literals.

* Matchers could change their caller's locals context if the
return value wasn't captured.