use cpp_strerror() wherever possible, and make it be the Posix one

Portability is enhanced by not relying on the Gnu behavior of strerror_r()
(namely, that it returns char * rather than int), so select it with
an #undef; further, clean up the random calls to strerror and strerror_r
(along with all their private little one-use buffers) and regularize
the code to use cpp_strerror almost everywhere.

Signed-off-by: Dan Mick <dan.mick@inktank.com>