Diagnose failure to register the exit handler

atexit() is allowed to fail.  If it fails for plan(), just warn
about the error with diag() but continue, since nothing about the
exit handler for plan() is vital.  For plan_lazy(), this will
interfere with reporting a plan, so bail immediately.
Use diag internally in the basic C TAP library

Rather than using fprintf with an explicit "# " prefix and the
newline, just use diag.  It's a bit slower, but it reuses code
and formatting and centralizes the choice of formatting in two
places.
Remove -Wno-overlength-strings from make warnings

Now that runtests breaks the usage string into two parts, it's
safe for make warnings to always build with the equivalent of
-pedantic-errors.
Some additional comments about cleanup functions
Move repetitive printing code in the C TAP library to a macro

Use a macro to print out the test description or skip reason based
on the variadic arguments to the function, reducing duplicate code.
Set a flag when bailing for more correct cleanup

Set a flag when the test is aborted with bail and sysbail, and
ensure that a false value is then passed into any cleanup functions.
Suppress lazy plans and the summary of tests at the end of a test
program if the program aborted with bail or sysbail.