New UI console

Reimplements the console on the new UI. It's something I've always intended to do, but #2725 forced my hand a little.

It looks a little different, but should operate pretty much the same as the old one. New features are the addition of a scrollbar and Ctrl-L to clear the screen. History and completion appear to do the right thing.

To support this, the UI has gained a monospaced font, a bugfix to clear the selected widget when its removed from the layout, and an improvement in cursor placement after its text is updated.

There's also a nasty hack in Pi.cpp to assist with getting input to the right place after switching to/from the console. This is just another symptom of our three-headed input system, and will be solved when I get around to unifying it. Big supporting comment included!

There's a lot more that could be done in both appearance and functionality (I have loads of ideas) but I didn't want to take this too far right now. Just enough for feature parity and to resolve #2725.

I'm happy with this, and will merge it tomorrow unless some glaring problem is noted.