Check and handle different forms of strerror_r().

This is a proper fix for the strerror_r() return value warning.

We now have a configure check and OS::StrError() to handle the different
forms of strerror_r().