Initial commit.

TODO:
- All documentation
- Channel state tracking
- Helper methods for using user and channel state