Consume less memory during build.
Fix bug in total ordering of expressions.

When defining a total ordering over empty class types, it is important for
operator< to return false, and not true, because all sorted containers use

        ! r(x,y) && ! r(y,x)

to build their equivalence classes of keys, where r is the less-than relation
typically defined through operator<. If operator< returned true, we'd have
duplicates per the above equivalence class defintion, which would violate the
unique key invariant.