Console input history navigation overhaul

* Moved the Console input history into its own class and renamed its
members
* Fixed a few glitches with the Console input history navigation
* Identical consecutive input entries now get merged together in the
input history for the sake of simpler navigation
* Renamed ConsoleUI.SetInput() to ConsoleUI.SetInputText()