test for basic overflow in bson_new_from_data().
add test for subdocument that tries to overflow bson buffer.
try to track the location of parsing errors.
Make sure we advance offset for regex cstrings.
handle binary type directly rather than falling through.

it turns out the int32 field does not include itself, unlike array
and document.
add bson_validate() to perform basic structure validation.

for those that want utf-8 validation, this can be built upon using
bson_visitor_t. We can add a failure callback as well for when corruption
is found. This way, utf-8 validation can be optional.