Fix expected<T> constructors being explicit (they should be implicit like optional<T>)

Fix result<T> constructors being explicit (they should be implicit like optional<T>)
Fix result<T> unable to be assigned an error condition enum value.
Fix result<T>::swap typo.
Fix result<T> operator == comparisons with error_conditions.

Add make_result for error condition enum values.
Add all tests for result<T> (result<void> tests are still WIP)

Fix warning generated by clang in variant tests