Refactor existing get/setReadPreference() tests

Made tests consistent across classes, and added getReadPreference() inheritance tests where appropriate. All classes use the same C implementation for setReadPreference(), so perhaps there's a more elegant way to ensure we test the same functionality against each class.
Fixed PHP-668: Allow empty setReadPreference() tags param for primary mode

See doctrine/mongodb#92 for why this was helpful.
Fixed PHP-679 PHP-681: Make setReadPreference() consistent

If not tags are provided, the read preference tagsets should be cleared out. If an error is encountered (either bad mode or invalid tagsets), the read preference should not be modified at all.
Fixed PHP-680: Don't free null pointers in read preference dtors