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
examples/app: Remove refactored code before GUI example was created
CMakeLists: Disable all but the GUI example