make TypeCheckLengthError subclass of TypeCheckError
better handling of iterators
reworked type_specs to return number of matched items