3.0 Start ConsoleIo class

This set of changes starts the proposed ConsoleIo class. I wanted to get this discussed and merged before updating all the core shells/tasks and updating the documentation.

Implements #3183