Adding QSet

Checkpoint: beginning to properly add Set support.

Tag Sets are now Sets, although that is essentially identical to the old
Lists.

Email Sent To is also now a Set.

Along the way, added the _commas() method -- I want this often enough
that we may as well reify the idiom.
Sets are now maintained in sorted order

This isn't terribly efficient at this point, but we expect most sets to
be relatively small, so it's not too bad.

As part of this, introduced PType.comp(), so types can declare their
natural sort order.

Note that QSet.from needs to take the PType as a parameter to make this
happen.  Not for the tenth time, I really want ElemValue to contain its
PType.
Sets are now deduped every time you change them

Checkpoint, but things are improving.

Again, this is rather inefficient but should be fine for the small Sets
that I expect to be the norm.
Progress towards Sets of Links

Checkpoint: still needs work, but starting to get there.
Sets of Links now respect the Link Model

Checkpoint
Now displaying Sets of Links correctly

Checkpoint: still can't send them back, but making progress.

Fixed the top-menubar spacing problem, which was just a dumb misreading
on my part.
Mostly working with Links

Been a long slog, but it's getting there.
Set of Links starting to work right

Checkpoint, but I think the only issue now is that "required" doesn't
seem to be getting enforced.
Sets of Links no longer allow arbitrary values

Figured out where to put the "required" flag.  Also, fixed display so
that Sets of Tags *do* allow new values again.
Email To is now a Set

Also, fixed a bug in the filtering -- Link Model is an ancestor, not a
direct parent.