* Fixes immutable container contract combinators so that, if given flat
contracts, they report blame errors in terms of the specific element
that failed, instead of reporting the entire container as failing.
This fixes issues seen with contracts such as (listof string?), where
the contract is applied to a list with far too many elements to print
all at once and the failing element is never printed.
* Fixes vector-immutable/c so that if all the element contracts are flat,
we create a flat contract, like the other immutable container contract
combinators.
* Also have more appropriate first-order checks for each combinator
than just "Is it the right type of container?".
These changes affect:
listof
non-empty-listof
vector-immutableof
cons/c
box-immutable/c
vector-immutable/c