Merge branch 'master' into MSVC_build_merged_with_master

Conflicts:
	boost/afio/afio.hpp
	boost/afio/detail/ErrorHandling.hpp
	libs/afio/build/Jamfile.v2
	libs/afio/test/Jamfile.v2
Fixed xrefwrap problem with VS2013.

Fixed warning with mismatched off_t.
Hand merged working bits of MSVC_build ahead of where we branched. This commit theoretically has the best parts of both branches :)
Merged the multi-part completion handler implementation.
Completely replaced the boost::asio::detail::win_iocp_handle_service Boost.ASIO async file i/o implementation with our own direct implementation. New Windows IOCP backend now passes all unit tests and torture tests perfectly wahey! Fixes #14.

While I was at it, replaced file length truncation with the direct NT kernel syscall which doesn't need to set file pointer, thus solving #18.

* Issue b11/19b (Torture test fails on Windows IOCP backend. Either it's a bug in Boost.ASIO or a bug in my code.) fixed.
Split thread_pool into thread_source and std_thread_pool. This enables alternative thread sources.

Made async_file_io_dispatcher constructor into make_async_file_io_dispatcher.
Renamed AutoFlush to SyncOnClose.

Renamed OSSync to AlwaysSync.

Added new file_flags EnforceDependencyWriteOrder which chooses either of the above depending.
Rebased async_data_op_req into a separate base class, hopefully fixing bad documentation generation.

* Issue b11/8c1 (Member variable documentation is missing from async_data_op_req<T>. Need to break out that functionality into a detail::async_data_op_req_base<T> to keep doxygen happy (it also avoids type slicing, which the current implementation does).) fixed.
Updated docs after the new refactoring. Looks like I broke the member variables support in async_data_op_req<>, plus I haven't actually fixed the doxygen getting confused problem :(
Refactored the async_data_op_req<> implementations to not confuse doxygen. Finally nailed that stupid docs corruption.
Stopped async_io_op's from taking a reference count to their dispatcher. As dispatchers no longer destruct until all their ops have completed, it was redundant and very slow. Closes #21.
Fixed up the documentation for the new async_data_op_req.
Merge branch 'master' into WinIOCP_backend_refactor

Conflicts:
	libs/afio/build/Jamfile.v2
	libs/afio/test/Jamfile.v2
Fixed up the new unit test infrastructure to match the new WinIOCP et al refactoring.
Small fix for missing std:: qualifier.
Merge branch 'master' into WinIOCP_backend_refactor

Conflicts:
	boost/afio/afio.hpp
Seems to still have a broken path
Merge branch 'WinIOCP_backend_refactor' of github.com:BoostGSoC/boost.afio into WinIOCP_backend_refactor
Reworked async_io_errors_test to be from now on stable. In the process, discovered that when_all() was not rethrowing errors at all (!) and so fixed that. Additionally replaced all throws with BOOST_AFIO_THROW() in preparation for switching on Boost's current_exception support for older compilers.
Assortment of small fixes, hopefully fixing mingw and GCC 4.7 support #26 #27