CListener smart pointers

CListener is currently creating a smart pointer from "this", which is always a mistake.  The smart pointer is passed to a CConnectionManager function that is expecting a smart pointer, so instead of using dumb pointers, it'd be much simpler to consistently use smart pointers for CListener.  After all, CBroker already possesses a smart pointer to CListener.