Minimal Go read-write-lock with context-cancellation support.
Usage is like symc.RWMutex:
Lock must not be copiedLock()/Unlock() for write lockingRLock()/RUnlock() for read lockingLockCtx(ctx) error for write locking with cancellationRLockCtx(ctx) error for read locking with cancellationMIT, see LICENSE file.