The interface ValueCodec is confusing because it matches the same name pattern as a bunch of other struct types that implement BSON codecs. Rename it to Codec so it's clear it doesn't describe a specific codec, but any codecs.
Definition of done:
- Rename the bson.ValueCodec interface type to bson.Codec.