Changed the way handle works in the semantics

Instead of doing an evaluate_match on the (pat*exp) list with an added x
=> Raise x pattern at the end, just add an extra argument to
evaluate_match saying what it should raise if it runs out of patterns.
Case can give it the Bind exception and Handle can give it whatever
exception it tried to handle.