Let a screen customize shortcuts and description.
Merge update functions and widget classes into screen classes.

This should make the code slightly easier to read and will enable me to
do some other nifty things later on.
Pass unhandled global input to the screen.

This lets us do nifty things like toggling verbosity levels on the USB
screen.
Let users attach Busy devices as well.

At first I was thinking that Busy meant that it shouldn't be attached to
a VirtualBox VM, but I've found plenty of instances where Busy just means
that the host OS has enumerated it and is ready to be used. This does not
actually prevent the guest OS from using it at all.
Merge branch 'add_dynamic_shortcuts'

This branch fixes some gripes I was having with the shortcuts display.
Each screen now has their own shortcuts displayed. They can also catch
those shortcuts when they are not being interpreted by the global
instance.