Prevent the creation of a blank Display Name

Alexx accidentally created a Model with a blank (not None -- an empty
String) Display Name, which turns out to be easy to do and terribly bad.
Once a Thing has a blank Display Name, it becomes very hard to get to,
because all links to it wind up zero-length.

Fixed by changing Display Name to a new Type, NonEmptyPlainTextType.
This is simply PlainText with an additional constraint, that the length
must be greater than zero.
Better but more complex solution to blank Display Name

Decided that the previous fix was hackish and heavy-handed, so undid it
and instead implemented a much more elegant solution.  There is now a
Minimum Text Length meta-Property, which gives the minimum length that
values of this Property can be.  In Display Name, that is set to 1.

This touched a lot of code, mostly because I did it right.  Validate now
receives a lot more contextual information, so it will be much easier to
do this sort of validation meta-property in the future.