Abstract server and client

Adds a abstract implenetation of Server
Adds a abstract implenetation of Client

Adds a NodeConnection argument to the ClientListener#newMessage(...)

Updates some docs.