ArrayDef is a TypeDef used with ParamValidator to represent a parameter that contains an array value.
ArrayDef should optionally take a JSON spec to validate against. Validation should be optional, controlled by an entry in the $options array passed to the validate() method.
The spec should be run through JsonSchemaTrait::normalizeJsonSchema, so it supports some shorthands that are convenient for use of JSON schemas in PHP, such as "list" and "map" types.
The actual validation should be implemented in a way similar to the code in ConfigSchemaAggregator::validateValue. We should investigate how much of that code we may be able to move into JsonSchemaTrait so it can be shared between ArrayDef and ConfigSchemaAggregator.