bunch of changes

- restructured the UniformErrorReports, reducing them to generic
  variants
- restructured TopicOps to break up the implementation (better
  readability)
- added more fields to things - user has an invites topic, there are
  more mode flags, etc
- added more stuff to ClientApi and added more tests.