Add a more nicely-located assertion when dereferencing an invalid iterator_base.
Don't treat subrange_type as a type_chain, because get_concrete_type() does the wrong thing (and it's no more of a type chain than enumeration_types).