Split console_t into separate input and output operations structures

Now console_t is made up of a pointer to console_{in,out}_ops_t
structures. This allows the implementation of input and output for a
console to be split across multiple places. This will be used for the
BIOS platform console code, which will use a generic VGA driver for
output, and BIOS-specific code for input.