tweaks to the iterator concepts, add SizedIteratorRange/iterator_range_size as a guaranteed O(1) distance, misc cleanup