This was partially inspired by miniirc but aims to be a little bit simpler. All message handling and state tracking are left to the user.