Implement our own vsnprintf variant.

The primary motivator for this is so that we can print floating point
values and get the full accuracy out, without having to print 1.5 as
1.5000000, and without getting 23e24 etc.

We only support %c, %f, %d, %o, %x and %s currently.
We only support the zero padding qualifier, for integers.
We do support some extensions:
	%C turns values >=128 into UTF-8.
	%M prints a fz_matrix.
	%R prints a fz_rect.
	%P prints a fz_point.

We also implement a fprintf variant on top of this to allow for
consistent results when using fz_output.

a
Add %q and %( formatting to fz_printf to print escaped strings.

%q escapes using C syntax and wraps the string in double quotes.
%( escapes using PS/PDF syntax and wraps the string in parens.