CSHARP-955: Added ParallelCollectionScan to whitelist of commands that can be sent to a secondary.
CSHARP-958: Fix AssignId when nominal type is an interface.
Serialize RawBsonArray and RawBsonDocument more efficiently when embedded in another BsonArray or BsonDocument.
CSHARP-932: Fix queries comparing BsonValue properties to C# null.
CSHARP-956: Aggregate command with $out cannot be sent to secondary.
copied over code from working branch as a rebase would be virtually impossible.
ported up some changes made in 1.9.0.
made the necessary changes to the Builders to get them functioning with the new SerializationInfoBinder.
compilation success.
fixing up issues with the builders.
fix issue with infinite recursion.
added back in missed 1.9.0 feature.
fix day of week test.
refactored builder helper to be an instance class, allowing better reuse.
fixed issue with deserialization of anonymous classes.
removed CSHARP-522 test as it was no longer relevant.
fixed a bug related to distinct only being allowed as the last operation in the query model.
botched rebase left out all the tests. Adding them back.