implement bson_reader_t for files and memory buffers.

See bson_reader_init_from_fd() and bson_reader_init_from_data().
This will help us avoid some allocations in a cleaner way from API.