Added handling for `MoveLeft`

This required a massive reorganization of `terminalDriver` to minimize code
duplication
Loosened `text` dependency
Made library -Wall clean
Improved core implementation

I now filter all console interactions through higher-level functions.  This
greatly improved correctness.