Simplify.
Staticalise.
Add and use a <cinttypes>-style printf macro for size_t

The MSVCRT library doesn't have much C99 support, and in particular
is missing the 'z' conversion length modifier.  However, it does
have a custom 'I' modifier that works for this purpose.

PRIuSIZET expands to "Iu" under MSVC and MinGW, "zu" elsewhere.
Use as: make_stringf("length: %" PRIuSIZET, vec.size(), vec[0]);

The Windows side of this is untested.