Redex Enumerators support mismatch names, holes, var-except.

Also various internal changes and an API contract change.