Save key

Opening this pull request for discussion, do not merge yet.

This key saves channel keys in the channel hash when you join a channel with a key, and sends it back on connection.

@jhthorsen I need your input on how to test this, I can't see anywhere in our test suite where we actually test the functionality of Core::Connection much.