Work in progress.
Fixed doc comments in Bson library.
Fixed doc comments and warnings in Driver and Core projects.
Got Driver unit tests passing with new serialization code.
Got Core unit tests to pass. Replaced object with either BsonDocument or TDocument in operations, protocols and messages.
Got Core functional tests to pass.
Process IBsonMemberMapAttributes in groups. Right now there are only two groups: 1. [BsonSerializer] and 2. everything else.
stash
Added checks for valid representation in constructors of serializers that take a representation.
Split LazyBsonDocument into two classes: MaterializedOnDemandBsonDocument and LazyBsonDocument. Changed BsonDocumentWrapper to be a subclass of MaterializedOnDemandBsonDocument instead of BsonValue. LazyBsonDocument and BsonDocumentWrapper are just two different kinds of MaterializedOnDemandBsonDocument.
Refactored most of LazyBsonArray into MaterializedOnDemandBsonArray to match how LazyBsonDocument works.
Removed non-generic version of BsonBaseSerializer.
Renamed classed that started with "IXyz" (but weren't interfaces) to something else that doesn't conflict with the interface naming convention.
Removed the IBsonSerializerWithItemSerializer and IBsonSerializerWithKeyValueSerializer that were made unnecessary with the introduction of the IBsonSerializerWithConfigurableChildSerializer interface.
Renamed IBsonSerializerWithXyz interfaces to IXyzConfigurable.
Removed obsolete conventions methods. Some unit tests had to be refactored as a result.
Renamed DeserializationContext to BsonDeserializationContext and SerializationContext to BsonSerializationContext.
Made serialization context Build methods internal. Renamed ConfigurableChildSerializer to just ChildSerializer and WithReconfiguredChildSerializer to just WithChildSerializer.
Added a Serializer property to InsertOperation and propagated it down through the InsertProtocol to the InsertMessage.