Basic serial device, supporting character input, output, and interrupt-driven IO. Used in bare-metal platforms, as well as an example for how to write serial devices in Simics.