The yaml constraint now compares sequence lengths
Factored out an abstract test fixture that smaller test classes derive from

* Three parameterized tests in the base tests match, mismatch and description
* Deriving classes implement Matches and Mismatches in order to supply the test data