Add documentation for expected and result types in optional component

(This documentation will be used to implement the discussed operators)
Update documentation for optional component.

Reorganize internals of optional component header.
Implement rest of relational operators for result<T> type.
Remove some unnecessary branching in boolean logic for comparison operators
(This made the constexpr comparison operators for optional<T> look a lot
nicer and also easier to understand)
Fix warning in optional component

Add tests for expected<T>'s new comparison operators.
Finish comparison tests for expected<T>
Fix make_expected function that is supposed to take an exception type
Add expected<T>::get_ptr back in

This was unwittingly removed and changes the API in a significant way.
It has been marked as deprecated
Add more documentation to the optional component
Add arrow-operator 'test' to expected<T> in optional component

Add basic test skeleton for result<T> in optional component