Initial GUI implementation, with mouse support/events/etc