fix implementation and use of bson_strerror_r

o we weren't correctly returning a possibly static string from
  bson_strerror_r.

o we're supposed to use the return value from strerror_r, not just
  assume that the passed in buf was filled