This patch implements exception_ptr on Windows using the __ExceptionPtrFoo functions provided by MSVC.
The __ExceptionPtrFoo functions are defined inside the C++ standard library, msvcprt, which is unfortunate because it requires libc++ to link to the MSVC STL. However this doesn't seem to cause any immediate problems. However to be safe I kept all usages within the libc++ dylib so that user programs wouldn't have to link to MSVCPRT as well.
Note there are still 2 outstanding exception_ptr/nested_exception test failures.
- current_exception.pass.cpp needs to be rewritten for the Windows exception_ptr semantics which copy the exception every time.
- rethrow_if_nested.pass.cpp need investigation. It hits a stack overflow, likely from recursion.
This patch also gets most of the <future> tests passing as well.