The first patch supersedes one of my previous ones, the change is to remove some irrelevant and broken changes to the protocol docs. Other changes fix the doxygen conversion so that each class/struct is a section, with all the related functions in that section. This makes it a lot easier to read the documentation.