Enable C++17 with MSVC
Our target on Windows is MSVC 15, which has good support for C++17 so we can use <optional> and <variant> - on other platforms we stick with C++14 and using experimental/optional etc.