Ruby suggestions for more abstraction.

Adds models for read preferences and write concerns.

Shows some potential interaction between Cursor, Node, ReadPreferences, and Wire Protocol abstractions.