No longer holds opslock during completions dispatch. This improves chained ops performance by about 10%.
Immediate completions are now executed without holding the opslock.
Replaced the recursive opslock mutex with a spinlock.

Immediate completions now do not hold the opslock.

Fixed race condition in when_all() now timings are tighter.

Fixed bugs in some of the tests now timings are tighter.
Fixed bug where on Windows and POSIX it was adding a null HANDLE to the list of internal valid fds.
Merged fix to broken fd close semantics from experimental branch.
Made unchained test a bit more L2 cache friendly.
Added raw ASIO benchmark.

Restored lock release during completions.

Updated docs.
To get more realistic benchmarks of IOPS performance, added a C function pointer overload to completion() and adjusted benchmarks to suit.
Forgot to commit changes to afio.hpp
Added figures for Linux.
Replaced the ops hash table with shared pointers, allowing me to remove the opslock completely except for when I touch the ops hash table. Still spending 65% of time sleeping sadly.
Manually tuned ops spin lock - performance is now as good as 2x slower than straight ASIO.
Updated release notes with new AFIO benchmarks.
AFIO now uses memory transactions support instead of spin locks, with __transaction_relaxed support and Intel TSX support. Falls back onto an emulated based on a custom spin lock if has neither.

Moved stuff out of afio.hpp into detail directory.
Memory transactions now actually work :)

Tuned our custom spinlock for AFIO. Added another 15% to performance thanks to the read spin to avoid cache line invalidation traffic.

Updated docs.
Whoops fixed typo.
Added benchmarks for Linux.
Added some extra exception state checks to the sync unit test.
Fixed some minor breakage, including hangs on Travis CI.
Now checks cpuid for TSX support, and only uses if available.