Only use the config reference table editor for config references.
Checkpoint: validate refs in lists/arrays.

I am discovering so many loose ends... I'm just trying to
duct-tape the important ones down, because most of this stuff
was always broken and I need to move past all the fiddling.
Bugfix.

That's the second dropped line I've discovered from this refactor.
Scary. But I noticed it looked wrong and checked the diff...
Added utility to build the Predicate from the ReferenceConstraints.

Annotation classes can't have static methods. Seems like you could
do some useful things. Or even instance methods. Nope.
During validation track ReferenceConstraints.

I hate everything.
Honor ReferenceConstraints when editing a simple config.

Nobody uses this thing. It's old and dumb. But I updated it.
Check existing config properties against the constraints.

Boy, I just don't know. I sometimes feel like lighting this
all on fire and starting over. But we have so many tools
and so much data!

But boy is it annoying that validating, properties, and editing
all do SORTA the same thing but in different ways.

To start, if properties could exist, have a path, but know
that they were invalid, we could just create properties for
everything, like we do, but then validation would just be
checking the root node to see if any subchild is invalid.
Editors could color themselves red from the point of an
invalid property. Gathering config references would work
the same way that the config manager ends up building dependencies
between configs. It's all basically the same... yet all slightly
different. And hellish to work with.

This is it, BTW. No more bright ideas about how I can make things
better because inevitably I get bogged down in the sludge and
I've got actual things to do!