Now have a driver interface.  We pass this to the 'player object' to be used
transparently no matter the actual source of input.

The terminal is the first input mechanism to use this interface.
Have terminal input driver working.  Initialise the player instance with the
driver, the players main loop will request input from the driver, driver.parse,
and then handle the input.