CDRIVER-424 Fix node selection with read preference tags

Node selection with tags is broken in the C driver for two reasons:
 - Node instances within a cluster do not have tags stored on them when they are tagged in the replica set configuration.
 - Node selection assumes a single tag set rather than array of tag sets.
In most of the codebase, we are explicit with conditional parameters here. Order of operations is correct, but sometimes just easier to read `nodes[i] && (scores[i] < max_score)`