Seperate server properties into a special other class, enabling more advanced operations
Change how messages are sent, plus misc

Instead of client.send(message), we have Message.send()
This was motivated by some messages needing to access client data (mainly server_properties),
and once you're at that stage it's silly to expect users to do something like
	client.send(Message(client, ...))
which could cause bugs if client != message.client.

Other minor changes in this commit because I CBF seperating:
* Some helper functions in Client
* better operation of Client.set_nick()
Standardise on tabs, because old code still used spaces
ISUPPORT stuff. WIP.