Redmine #6214: Fix memory alignment errors when using LMDB/NextDB().

This was causing SPARC architecture to crash when expecting a struct
in the value, since the struct would be aligned to a byte position
which depended on the length of the key. x86 is also slower when
accessing unaligned data types, so should be an improvement there as
well.
(cherry picked from commit 34341189aea42d5ff2d4ae4ff1134ed2e1bd0817)
mark tests as test_suppress_fail

(cherry picked from commit f5aa5eb20899662cae4a6020895283b39f480597)

Conflicts:
	tests/acceptance/05_processes/01_matching/004.cf
	tests/acceptance/05_processes/01_matching/006.cf
	tests/acceptance/05_processes/01_matching/100.cf
	tests/acceptance/05_processes/01_matching/201.cf
	tests/acceptance/10_files/templating/timed/expired_edit_line_locks.cf
	tests/acceptance/16_cf-serverd/01_start/allow_path1_then_deny_path2_a.cf
	tests/acceptance/18_examples/ouputs/check_outputs.cf
Revert "Apparently we can't support size_t's z modifier in formats."

This reverts (most of) commit ef3b5fe24263f47db8ef937f450cd3655c1b59b4.

BIG FAT NOTE: We provide a C99 snprintf(). So our Log() function and
              most other libutils facilies *are perfectly good* with C99
              modifiers. You should only avoid C99 modifiers when
              calling non-snprintf functions directly from libc, e.g. an
              fprintf() call.

Conflicts:
	cf-serverd/tls_server.c
	libpromises/dbm_tokyocab.c
	libpromises/eval_context.c
	libpromises/evalfunction.c
	libpromises/policy.c
	libpromises/promises.c

(cherry picked from commit dc36265712c0360d5b73db99e8d3def861b22a50)
Log() can use C99.

(cherry picked from commit c8898d41471c7f70727bb226b5463844812cb30e)
Log() and cfPS() can both use C99.

(cherry picked from commit 4366ae814aa8dc1a1a9490f4c78c18e36c9b3d19)
Log() can use C99.

(cherry picked from commit 01735baad8b2c61343deb48dc64c9b7ea1bf4d68)
Some incompliant printf()s segfault ...

... when asked to write to an NULL buffer. From snprint man page:

C99 allows str to be NULL in this case, and gives the return value (as
always) as the number of characters that would have been written in case
the output string has been large enough.

(cherry picked from commit dc320cf608551a0c879431f1c4e2141a0c89cb98)
Reflowed HACKING.md with set-fill-column set to 78.

(cherry picked from commit a955b35939cfcc03b61fdcf96afa64d8edd90087)
Update HACKING.md to clarify our C99 support status.

(cherry picked from commit fdf10a145921725237ca4de100f96d78aaed9a19)
Added another test according to @ediosyncratic's review.

(cherry picked from commit a0c870421db0c590f8b0f6e5823533c15ab56c86)
All our [v][f]printf() calls have now C99 replacements in libcompat.

(cherry picked from commit 5177351a05a4d25900f6f28f6f52a0422db751f5)
Update HACKING.md to reflect C99 status.

(cherry picked from commit b215e56acd7ab9b5f5a6b96a008056e1766cc475)
Cleared implementation of compiler.h.

(cherry picked from commit 75f492d546f343eba57a60a7f06195af1fee1ff1)
Mark sprintf as deprecated.

A warning will be now output on every usage of that function on
GNU/linux. sprintf() is the only function for which we do *not* provide
a C99 libcompat replacement. While it's trivial to do it, I chose to
mark the function as *deprecated* because there is no good reason to use
it in place of snprintf().

In addition there is one good reason to *not* provide libcompat wrapper
for sprintf() and leave it as it is: so that we can call the specific
function to force invoking the underlying libc implementation. This is
the way the snprintf() test works (see libcompat/snprintf.c), it
compares its own results with libc's sprintf() results.

(cherry picked from commit b8fe58eeeb4af764c668b5f75d21f997cd03f01e)
__printf__ is safer to not be replaced by preprocessor than printf

On some platforms it was being replaced by rpl_printf, and that string
was unknown to the GCC attribute.

(cherry picked from commit e7c821fcf06342320af7e99754f307a6878a3908)
Remove forgotten comments.

(cherry picked from commit c0a4c7a0f4f18ff87a3554039e23356190a977c9)
Convert all sprintf()s to snprintf()s

I must confess, the sheer amount of unchecked return values really
scares me.

(cherry picked from commit 5c7a2e05e6e334a3919593fbd1011c72359f458f)
printf was expecting format string, use fputs instead.

(cherry picked from commit deae6fd8d8386af9254d269daad63ae2f8dee6cb)
It all started trying to make HashPrintSafe() really safe...

I did half the work, but still, it was no easy task.

(cherry picked from commit eb492a93cc05beb4e19626284b783a70ce076933)
Introducing xsnprintf().

(cherry picked from commit 0e9f04a76df4e23f4ed37150ffec6ea263b87feb)