Fix asprf() and thus the builtin ITOA word

ITOA was producing garbage results on GNU's libc due to a subtle
limitation of the vsnprintf() function. As the vsnprintf manpage states:

"the value of ap [the va_list argument] is undefined after the call"

I was attempting to reuse the va_list argument to vsnprintf(), but it
refers to an object that gets mutated by the call, apparently. (This is
different from the behavior on OpenBSD's libc, at least back in 2006,
where what I was doing worked.)

The fix is to call va_end() and then call va_start() again before trying
to reuse the argument list.

Thanks to @domroselli at Hacker School for pairing with me on this bug
fix!