Use iterator categories to select an implementation of str_reader