make append methods return a new bson_t.

This allows us to use a single allocation for a bson_t rather than
multiple small allocations that thrash the memory allocator. The downside
is that you need to re-assign the bson_t when calling append functions.
GNUC will set a warning if you do not do this using the
__attribute__((warn_unused_result)) attribute.

Example:

  b = bson_append_string(b, "hello", "world");