Import experimental/optional from libc++ 3.5, under MIT license
Fix include guards
Remove limit in c++ standard version
Untie optional from libc++

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
Add SDL2pp wrapper for optional

With future C++ standards, library will switch to std::optional, however
for now we need a wrapper to choose between our bundled implementation,
std::experimental::optional (if that's available) and std::optional
(when that's available)
Add test for optional
Fix build with broken libstdc++
Switch to Optional

Remove "valid" flag from Rect and Point, derive them directly from
SDL_Rect and SDL_Point structures, simplify logic. Now x/y/w/h member
variables are directly accessible and Rect/Point may be passed as
SDL_Rect/SDL_Point via pointer or reference.

Change all cases where Null Rects and Points were used to Optional.

invalid state related functions like Null(), IsNull() and Get() are
now deprecated but are not removed yet for compatibility sake.
Switch AudioDevice to Optional

No compatibility here, as API is broken anyway (Optional<std::string>
ctor won't accept const char*)
Axe out remaining uses of old Point/Rect API
No need to use accessors here
Move cpp_optional into separate directory
Add Optional to library headers
Add checks for useful c++1y features
Allow to set c++ standard
Use experimental/optional if available
Add c++1y test to travis
Ident nested preprocessor
Define a macro for deprecated attribute
Merge branch 'c++1y-checks' into use_optional