CSHARP-666: Add support for lazy deserialization of BsonDocuments.
CSHARP-666: Changed based on code review.
CSHARP-666: Added canonical implementations of IDisposable base and derived classes and structs.
CSHARP-666: Changed implementation of Dispose in new classes to match canonical implementation.