Finished GUI message API outline

Message API should look roughly like this, still needs some work but at
least it has a structure now.