fmt: fix up zero padding
If the padding is huge, we crashed by blowing the buffer. That's easy: make sure
we have a big enough buffer by allocating in problematic cases.
Zero padding floats was just wrong in general: the space would appear in the
middle.

Fixes issue 6044.

R=golang-dev, rsc
CC=golang-dev
https://codereview.appspot.com/12498043