Style changes:
* Change namespace: std::experimental -> SDL2pp::cpp_optional
* Change _LIBCPP_BEGIN_NAMESPACE_STD to plain "namespace std {"
* Remove _LIBCPP_INLINE_VISIBILITY, _LIBCPP_EXCEPTION_ABI
* Change _NOEXEPT to noexcept
* Address all c++ standard library primitives via std::
Functional changes:
* Change _LIBCPP_ASSERT() to plain assert()
* Remove constexpr from functions which require c++1y relaxed constexpr
requirements
* Change __is_nothrow_swappable condition for noexcept of swap(), to
noexcept(std::swap) (idea taken from libstdc++)
* Remove constexpr from operator-> const to not require
internal __has_operator_addressof