RUBY-624 Node preference modeling

Update: I've changed the name of the module to NodePreference so that the classes can be used to select nodes in contexts beyond just reading. For example, when a write operation is sent to the cluster to be executed, the Primary node preference object can be used to select the primary from a list of nodes.

This pull request includes classes for each read preference, a Selectable module that each read preference includes, and a read preference "factory".

To get a particular node preference object, you can use the NodePreference module method #get:

    pref = Mongo::NodePreference.get(:secondary, [{'tag' => 'set'}], 20)

You can then pass a list of candidates to the preference object's #select_nodes method:

    pref.select_nodes(candidates)

The method will return a list of nodes matching the read preference, in preference order, on which an operation can be executed.

TODO:
Acceptable latency should be a global setting, not per-read preference object.