Op input validation now also checks for handle validity. This stops someone passing a standalone completion op in as an input to a file i/o op.

Tried reworking the std_thread_pool destructor once again to hopefully stop randomly hanging on exit on Windows.
Merge branch 'master' of github.com:BoostGSoC/boost.afio
Reverted my accidental changes to master. They will be on a new branch.
Figured out hang on Mingw32 - its std::atomic<> isn't threadsafe (yes, really). Now uses boost::atomic<>.
Made thread_source reference counted as a workaround for ASIO's io_service not liking to be destructed during process static deinit.

Added in thread_source to the docs, which was missing.
Added ability to force CPU number down in order to try and repeat the hangs on the CI here on my CPU monster desktop.
Here's a nasty performance killing hack to try and get ASIO's Windows backend to stop losing write completion wakeups.

Now sets thread name in AFIO created threads for debugging convenience.

Added countdown before watchdog kills test, thus letting one more easily break into the debugger at the right time.
Merge branch 'master' into closure_engine_docs