Remove some struts.
Some refinement of ambiguous identifiers.

It's unfortunate that "isEmpty" is the hardcoded communication
path with the pattern matcher, because it's quite easy to find
oneself wishing to distinguish between something being empty
and something not being defined at all. It's essentially the
difference between 0.0d and NaN.

I eliminated most casual use of isEmpty in favor of the more
evocative isUndefined.
Propagating undefinedness more consistently.
Add a Nat test.