Wrap strerror_r to return the error message string

GNU `strerror_r` returns a pointer to a string containing the error
message, which may be the buffer passed as `buf`, or a pointer to an
immutable static string, in which case `buf` is unused.

XSI `strerror_r` always stores the error message in `buf`, and
returns an integer (0 for success).

This modifies the RBX_STRERROR macro to ensure that we match the
GNU-style use of the function.
Bump config_version
Use static_cast for strerror_r return type check