Evaluator :match request only run eval once

* a case expression is built to match clauses and return the clause
  itself as an escaped tuple.
defrecord State and state.stack

* states are kept inside a record which contains the scope, the
  binding and a stack containing the states on the other levels.
* still only called on match_next.
* added two Evaluator casts: state_push and state_pop.
* stack is still quite poorly managed: only { binding, scope }
  should be kept instead of a snapshot of the entire previous stack.