Split validations into two, new validations and test specificity

This started out by adding new validations, to remove old upgrade code in AbstractSchemaManager, but of course it wasn't that simple.

The new validations check ordinals and UUIDs and the latter found issues with the assignment flow. Tweak placement of `ensureUUIDs` to *after* the new table is merged in to catch hidden columns.

However, neither of these validations could be in the stock list as they aren't satisfied by just building an AIS alone. So, split the validation list in two. The obvious ones that aren't always required are not separate and only checked in ITs/an actual system. I'm guessing this could eliminate the need for tree name/storageDescription in the builder but I didn't attempt it.

AISValidationResults#throwIfNecessary chose the first exception in the list. This changed for a handful of tests due to list splitting/reordering. Instead of futzing with that, throw all of them and update expected in tests.