MODE-2074 Fixed the usage of CharSet decoders/encoders by the BsonDataInput/Output classes

It's worth mentioning that CharSet encoders/decoders a) hold state and b) are _not thread safe_. The way ModeShape was/is using them, is as local variables, so there are no reasons IMO to try and make them "global".

Fixing the above exposed another bug inside `BsonDataInput` around reading strings when the string size is larger than the default buffer. This PR attempts to fix that as well.