Implement nullopt_t and nullopt
Implement optional copy & move constructor and move assign function.