bson: add bson_destroy_with_steal().

This allows, for non-read-only bson_t, to steal the underlying buffer.
In the case of inline buffers, a new buffer is allocated for the result
and returned for the convenience of the caller.

The caller must call bson_free() on the result when they are done with
the data.
bson: be a bit more defensive with stealing data.
bson: make bson_destroy_with_steal() equivalent to bson_destroy() if !steal
doc: add docs for bson_destroy_with_steal().