usb_console: Const-correctness
main: Begin implementing some power management
usb_console: Refactor back to event driven model

This seems to fix the transmit stalls I was seeing on some machines.
It's a bit painful, but whatever works.