Split data package up into digestable chunks.

- Put each type in it's own file.
- Add some update methods for later updating the important
  protocaps-sensitive information (ModeKinds and UserModes).
- Add a new ChannelUser type that can store data on a channel.