The UnmarshalWithRegistry and MarshalWithRegistry family of functions takes a bsoncodec.Registry currently, but that limits user's ability to configure how other factors during encoding or decoding function, e.g. MinSize, Truncate, etc...
Add MarshalAppendWithContext, MarshalExtJSONAppedWithContext, MarshalExtJSONWithContext, UnmarshalWithContext, and UnmarshalExtJSONWithContext.
The Marshal* functions should take a bsoncodec.EncodeContext and the Unmarshal* functions should take a bsoncodec.DecodeContext.