CSHARP-1111: Split serialization contexts into two parts: a context that remains the same throughout the entire call tree, and args that apply to one serialization level only. The goal is to reduce GC pressure caused by constant creation of child contexts.
CSHARP-1111: Remove Parent property from serialization contexts.
CSHARP-1146: Modify WriteConcern to use Optional<T> and With method.
CSHARP-1146: Remove Enabled property from WriteConcern (replaced by IsAcknowledged).