Added more things to ChannelCollection

The ability to add/remove channels
Refactored ChannelCollection

JoinPartChannelService provides a service to join/leave channels
Renamed JoinPart to JoinLeave to match the rest of the API