A whole bunch of minibuffer revampery.

We live in a magical world of graphical user interfaces, so let's leverage
that. The status is now overlaid on the main buffer in big text with a nice
shadow. (Peskily when it wraps JavaFX does a piss poor job of laying it out
nicely, but I've sunk enough time into trying to fix that for now; I'll revisit
it later.)

The minibuffer is also a popped up overlay, which is separate from the status
(so showing status while displaying the minibuffer doesn't have to be modal and
complex). There are various rough edges with having things be big, which I'll
have to smooth out, but the basic setup is now much nicer.

I also revamped minibuffer logic into major modes. When a minibuffer action is
requested, we create a whole new minibuffer with the appropriate major mode.
This allows the major mode to have total control over how the minibuffer
behaves (MinibufferMode inherits from EditingMode, but everything can be
overridden and customized as needed). It also puts all minibuffer code into
"user land" which is great because third parties should be able to do fancy
custom things with the minibuffer if they have the urge.