Flesh out Optional members swap, reset, emplace, has_value
Summary:
[Folly] Flesh out `Optional` members `swap`, `reset`, `emplace`, `has_value`.
* `swap` as a member and deriving `noexcept`-ness to mimic `std::optional::swap`.
* `reset` v.s. `clear` to mimic `std::optional::reset`.
* `emplace` returning ref and overload taking initializer list to mimic `std::optional::emplace`.
* `has_value` v.s. `hasValue` to mimic `std::optional::has_value`.
Reviewed By: WillerZ
Differential Revision:
D6132775
fbshipit-source-id:
34c58367b9dc63289e4b9721c5e79b1c41ba31e4