N45088 adds shared_mutex to the set of mutex classes. This is exactly the same as shared_timed_mutex, without the timed bits.
Create a new class __shared_mutex_base with all the non-timed bits in it, and make shared_timed_mutex and shared_mutex use it. Don't inherit from it, because ABI break. Also, leave some stubs in the dylib for the functions that were renamed, because ABI break.
Duplicate the shared_timed_mutex tests, strip out the timed bits, and rename them to use shared_mutex
Why > 14 and not >= 17? I don't have a preference, just a question.