Two changes:

 * Handle special FP-values more accurately. We probably need something
   for rounding to some number of significant digits and also padding,
   but at least NaN, +-inf, and negative 0.0 is handled properly.
 * Document `vs_pushdouble`.
 * Be pessimistic: don't grow a buffer if we don't have to.