Add optional<T> from C++14, based on the implementation in libc++