Fix `test_read_preference`.
Fix `test_read_preference`.

I ran this against PyMongo v3.4 and v3.7.2 and both runs succeeded.

This commit switches the read preference checks from
`QuerySet._cursor._Cursor__read_preference` to
`QuerySet._cursor.collection.read_preference`. In PyMongo v3.7, the latter is
only set after the initial `find` is sent [0]. This means we could've fixed the
test by executing the query (e.g. by calling `list(bars)`), but that requires
to actually execute the query, which isn't strictly necessary. The alternative
fix is to check the read preference on the collection which the cursor is
associated with and that's exactly what we do here.

As a bonus, I also improved the assertion checking for the `TypeError` to make
sure that the tested statement fails for the expected reason.

[0] https://github.com/mongodb/mongo-python-driver/blob/3.7.2/pymongo/cursor.py#L214-L215

closeio/mongoengine