Factor runManyCommands() out to a new class, so that 'read' can be an ordinary command