Add 'usbkbd' and 'tee' drivers

This commit adds a driver for USB keyboards (boot protocol only) as well
as a new "tee" driver, which can combine multiple input devices into one
or clone output to multiple output devices.

In the rewritten main(), a tee device is used to allow the CONSOLE to
receive input from an attached USB keyboard while still allowing input to
be sent through SERIAL0.  Similarly, the same tee device is used to send
CONSOLE output to both SERIAL0 and FRAMEBUF (if the later is available).

More information can be found in docs/features/Tee.rst and
docs/features/USB-Keyboard-Driver.rst.