We still have fonts to do, so this is very ugly, but it at least shows *something* on the screen now.
Interface is now Driver, and Widget is now a set of interfaces with a struct per widget type. This should make it easier to add other types.