Remove misguided performance optimization from NominalType.

Putting the structural view into a second parameter list was done to
speed up equality and hash code computation for NominalType, on the
grounds that structural views have to be consistent anyway throughout
the tree. However, this invariant only holds between phases. Inside a
phase, the structural expansions may be temporarily inconsistent,
causing Node.nodeTypedOrCopy to overwrite a type that has already been
seen when replacing a NominalType with a new NominalType that has the
same TypeSymbol but a different expansion.

Fixes #912. Test in UnionTest.testBasic.
Added support for string function repeat. No native support in SQLite but successfully simulated; no support in Derby.