mongoc_cluster_node_t.tags and replSet are overwritten with the new ismaster response, without being destroyed first. If the node represents a replica set member then its replica set name will be leaked. Same for "tags" if the tags document is large enough to spill to heap.
Verifies mongoc_cluster_node_t's "tags" document is properly reinitialized in _mongoc_cluster_node_destroy.
In _mongoc_cluster_node_destroy, don't NULL the node->tags bson. Reinitialize it instead, so it can be safely destroyed again if the node is reused and disconnected.
Undo two bad changes introduced while fixing CDRIVER-695, and add another safety check in _mongoc_cluster_node_destroy.
Avoid scenarios like: 1. Connect to 2-node replica set. 2. _cluster_reconnect_replica_set enters first loop, calls ismaster on primary and finds two peers. 3. nodes_len is set to 2 and the nodes list is realloc'ed, but the second node is uninitialized. 4. _mongoc_cluster_reconnect_replica_set enters second loop. 5. Auth fails, "goto CLEANUP". 6. Now nodes_len is 2 but the second node is still uninitialized. 7. Later, _mongoc_cluster_node_destroy iterates over both nodes. 8. Destroying second, uninitialized node calls stream->close, which is a random location, segfaults.