- Renamed OpaquePtr to OpaqueType, which is more correct as it isn't a pointer.
- Added alignment restriction to OpaqueType
- Changed Mutex implementation on Windows to use faster SRWLOCK instead of CRITICAL_SECTION (cannot mirror this change on Linux because pthread_cond_wait can't accept a pthread_rwlock_t)