Clean up optional<T> implementation
Apply constexpr to more functions