fix(threads): centralize portable strerror handling
- Move strerror_r portability logic to Utils
- Add strerror_buf() helper
- Add strerror_str() wrapper using std::error_code
- Simplify thread error logging in Threads.cpp
Change-Id: I642aff8a9f98823e117c4debd19384ddf5975039