my/argv: use variadic macro syntax for LOC_SNPRINTF

this fixes build failures on platforms where snprintf is itself a macro.
my/my_time: my_gettime(): add fallback for platforms without clock_gettime()

for platforms which unfortunately lack clock_gettime(), fall back on
gettimeofday(). for systems which do have clock_gettime(), this now
requires injecting a config header containing a HAVE_CLOCK_GETTIME
macro.

this complicates my_gettime() callers considerably, which now have to do
something like:

    #if HAVE_CLOCK_GETTIME
        static const clockid_t clockid = CLOCK_REALTIME;
    #else
        static const int clockid = -1;
    #endif

        struct timespec ts;

        my_gettime(clockid, &ts);

clock_gettime() is part of the base POSIX spec now (and prior to that,
in optional parts of the POSIX spec), so this workaround will only be
used on platforms that are not POSIX compliant.
my/my_rate: my_rate_sleep(): clock_gettime -> my_gettime