Fold open_external_*() helpers into open_*() function

These internal helper functions delegate all their work to the
ProcessIOReader helper class, so use ProcessIOReader directly instead.