new Iterable<T>::IterableSharedPtr/_IteratorSharedPtr and IterableSharedPtr to reduce ambiguity and unclearity about which _SharedPtrIRep dealing with in iterables