ck_swlock: A single writer rwlock.

This lock is copy-safe when the latch operations are used.

Simplified write side operations lead to lower latencies than ck_rwlock
for single writer workloads.
ck_swlock: First round fixes for ck_swlock.

- Add necessary memory barriers.
- Style conformance.
ck_swlock: Switch to TATAS style loop for latch operations.
ck_swlock: Fix-up TATAS loop.
ck_swlock: Fix Copyright ordering.
ck_swlock: Whitespace change.
regressions: Remove optimization flags from ck_swlock.
regressions/ck_swlock: Fix-up style and Copyright.
ck_swlock: We shouldn't decrement n_readers when
ck_swlock_read_latchlocks observers a writer if the unlatch
operation sets n_readers to 0.

The unlatch operation now just unsets the latch bit, we can safely
decrement n_readers in ck_swlock_read_latchlocks().

+ Fixes to validation tests & ELIDE coverage.
Merge remote-tracking branch 'jsridhar-dev/ck_swlock' into ck_swlock

Conflicts:
	include/ck_swlock.h
	regressions/ck_swlock/validate/validate.c
ck_swlock: Fix makefile
ck_swlock: Decrement n_readers in TATAS style loop.
ck_swlock: Validation for normal write lock
ck_swlock: Need barrier
ck_swlock: Convert ELIDE tests to single writer
ck_swlock: Need to lock cache-line on write lock
ck_swlock: Unlatch operation should be wait-free.
ck_swlock: make ck_swlock_recursive_write_unlatch() wait-free.
Merge remote-tracking branch 'upstream/master' into ck_swlock

Conflicts:
	.gitignore
ck_swlock: Use single word for lock bits