CPP-190 - Session API fixes

There's a flaw in how the session's lifetime was connected
to the lifetime of the connect/close future. It was possible for
the session thread to join itself when it freed a future object
becuase it had the final reference.