Adds Engine::Interface to coordinate the human interface and widgets.

The Engine::Interface presents a set of widgets that interact with human
input. It coordinates with Registry::Interface and Registry::Widget and
allows the ultimate loading of hci/ui from JSON descriptions.

Next: Cleaning up the process and removing stray memory allocations by
refcounting widgets and destructing interfaces within the interface
engine. Only the interface engine should create instances of Interfaces.

Also, Engine::Interface should allow multiple interfaces and overlays.
For one, you can have the normal game interfaces and then overlay a menu
when a person presses escape. Etc.

Interface widgets are very similar to Scene Actors... except the widgets
are never considered part of the Scene and are not considered for
collision or for scene graphs or space partitioning optimizations. They
obviously also do not use scene coordinates (they use screen
coordinates.)

Otherwise, they are Objects just as much as Actors are. I might
consolidate some of the event functions for both.