Switch string io to be generic upon iostream, rather than specific upon fstream.
No direct test added because we currently lack a second implementation of the abstract streams.
Benefit is removing polymorphism-induced noise from cost calculations, in upcoming string-overload reorganizations.
The change in tests 'collections/string-operator*' shows cases where we stopped picking string for the wrong reason. (If we should be picking string for a better reason, that's just ahead.)