Make Channel clear its users on leave, other fixes

Remove redundant string.Format uses
Remove unused return value in UserFactoryRemoveNick
Make Channel.User be a ReadOnlyDictionary
Channels now remove themselves from the factory once the main user
leaves them
- This removes the need to unbind all event handlers from a channel to
prevent duplicated handlers