A BSON Document is an untyped (dynamically type-checked) record. I.e.
it is a list of name-value pairs, where a Value is a single sum type with
constructors for basic types (Bool, Int, Float, String, and Time), compound
ObjectId, RegEx, and a few others). A BSON Document is serialized to a standard
binary encoding defined at <http://bsonspec.org>. This implements version 1 of