Port hsThread to a std::thread-based implementation

hsThread now becomes a wrapper around a std::thread, while maintaining the comfortable class-based API.

This does not include the port of AsyncCore to hsThread/std::thread, as that part has many more conflicts with #412