Initial refactoring of GUI
Additional GUI infrastructure

* Introduce GUI example app
* Introduce Button, ListBox GUI controls
* Introduce UIEvent & UIEventCallback support classes with experimental event
callbacks for Button & ListBox GUI controls.
Update codebase to reflect API changes from rebasing dev onto branch