Tidy up server and connection events

This is a largely cosmetic update to the way server and connection (client) events are bound. A static constructor is added to the Client module to make creating instances more tolerable.

This change makes cleaning up events simpler, as we bind fewer anonymous functions.