Documentation changes.

Figured it would be good to get these in a semi-cohesive state.
Lots more to do.
Moving the UI protocol into a separate file.
This started out as a documentation step, but needed to be done to keep things clean.

TODO: maybe move the receiving part of the protocol into the same file.
Right now we encode and decode with it, but the decoding reaches into static tags to find the command name and the payload.