Committing changes merged from trunk, most notably optional non-intrusive exception_ptr support for MSVC.