update of new concepts, and replacement of range_size<T>::type with range_difference<T>::type throughut the library