WL#8190: Refactor low-level thread handling

Status: Complete

There are several issues with the low-level code for handling OS threads:
- Separate APIs for Windows and Non-windows platforms (thread create & join)
- Windows APIs are not fully tracked by performance schema (thread create)
- Dummy functions are defined for pthread features not supported by Windows.
  This makes it falsely appear as if these functions have effect on Windows.
- Heavy use of macros where inline functions or typedefs would be better.

This WL aims at refactoring the low-level thread handling code to correct
these issues.

This WL is similar to:
- WL#7607 Refactor atomics implementation 
- WL#7914 Remove custom rwlock windows implementation