add custom callback feature, dissociate server.close from cluster.disconnect

fixes #5, #6, #7