adjust contract test suite to do more provide/contract => contract-out
rewriting in order to test contract-out more
make contract-out signal more errors in terms of itself
instead of provide/contract

closes PR 13752
fix thread-creation problem

When starting a thread, the thread was created and partially
initialized before trying to get a name for the thread from the given
thunk, but getting a name for the thunk could trigger scheduler
descisions, which could get confused by the partially initialized
thread.
Reduce code duplication in Redex enum
Added var-except
Minor change to Redex contracts to maintain bijection internally
Remove redundancy in recursive enumeration.