Generalize phase postcondition checking.

Have a general way how a phase can establish a postcondition which will be
checked each time a later phase is tree-checked.

Moves erasure constraints from TreeChecker to Erasure's post condition.
Make foreach/exsists into tree infix methods

foreachSubTree and existsSubTree are now infix methods. Streamlines their use
somewhat.
Move explicit outer after pattern matching

But allow pattern matching to provide outer accessors when needed
using with ensureOuterAccessors.