Add Character, GUIElem and Viewer classes

Viewer is still not fully functional. Currently it simply presents the GUI
and offers a separate window to create new characters, but character
capturing has not been fully implemented.