Added doxygen comments for most stuff
static_assert to check optional's T value is destructible
Prevent optional to be instantiated with nullopt_t and in_place_t
Added the type traits shortcuts in xxx_t form as in N3690.
Added constexpr forward/move as in N3690.
Updated optional implementation to N3690

http://isocpp.org/files/papers/N3690.pdf