Make buffer appending more efficient

We make cork_buffer_append_vprintf more efficient by not relying on
vsnprintf to determine the size of the format string.  Instead, we
call vsnprintf directly on the current buffer.  If it fails, we add
more space to the buffer and repeat.  The second call is guaranteed
to suceed since the call to cork_buffer_ensure_size_int guarantees
the requested space will be available upon return.