Belt-and-suspenders protection against bad values

Giving an empty string for an ExactlyOne WholeNumber was crashing the
UserSpaceSession, hard.  Fixed that at two levels.