ck_spinlock: Add ticket lock with trylock operation.

Upon popular request, added a variant of the ticket spinlock
with trylock support. This is pending additional verification
on other architectures besides x86*. It is still unclear whether
this implementation will be the default as it is has slower
fast path.

Add trylock support to the ck_spinlock validation tests.
It currently only tests ck_spinlock_ticket_t trylock
functionality if available.
ck_spinlock: Only enable trylock path for TSO architectures at the moment.
ck_pr/gcc: ck_pr_fence_load_depends should be heavy-weight on catch-all target.
ck_fifo: Get rid of load_depends usage for now.

Until a target pops up with a requirement for load_depends(),
the cost is not worth it for now.
ck_pflock: Phase-fair read-write lock implementation.

John Wittrock has contributed a phase-fair reader-writer
lock implementation. These locks allow phase fairness
guarantees between readers and writers. This work includes
additional changes and clean-up.

Follow-up work is expected.

Thanks to John Wittrock for patches and Professor Gabriel
Parmer (http://www.seas.gwu.edu/~gparmer/) for advising.
regressions: Add ck_pflock to make check target.
ck_pflock: Load acquire semantics are sufficient for read_unlock.

Also, make sure to implement acquire semantics if there are no
contending writers.
ck_pflock: Whitespace change.

Move acquire semantics comment block on read_unlock beneath
exit label.
ck_cohort: First-cut implementation of generalized cohort interface.

This work was contributed by Brendon Scheinman. This work is based
off "Lock Cohorting: A General Technique for Designing NUMA Locks".
regressions: Add ck_pflock clean target.
ck_pflock: Fix Copyright typo from original patch.
Merge branch 'master' of https://github.com/sbahra/ck