bcon_extract - declaratively parse BSON

bcon_extract family of functions that operate like bson_append, but
allowing for extraction and verification of bson, rather than creation.

Also added a bunch of compile time type checking that makes everything a
lot more reasonable.