Added PType to ElemValue

*Huge* checkin, mostly because of GitHub for Windows fuckup -- this was
originally about five commits, but GfW corrupted my local repo.

Main point is that ElemValue now carries its own PType, and should be
used to fetch its own typed values.  Most everything else is in support
of that.

Introduced DelegatingType, as a way to use a PType very early on without
introducing circular-reference crashes on startup.  This is a
lazily-initializing wrapper around a PType, which delegates to the real
type for all action.

Discovered that Thing.getModel is incredibly fragile.  Introduced
getModelOpt, and began to use that instead.  Made hasModel sensitive to
whether the "model" is UnknownOID.

Began to remove some of the sillier Optional properties on the Ur
models.  Now that I understand the usage of Optional better, those no
longer make much sense.