Buffer append: Don't allocate unneeded space.

Previously we always allocated twice the space of the existing buffer,
but if "length" is significantly less than "fill" we might need much
less space than that. So just allocate enough space for the current
length, plus the 1 byte we're adding, rounded up to a power of 2.
Buffer append: Initialize the right byte!