cpp/utility/compare/three way comparable

@1@ The concept specifies that the three way comparison operator  on  yield results consistent with the comparison category implied by.

@2@ The concept specifies that the three way comparison operator  on (possibly mixed)  and  operands yield results consistent with the comparison category implied by. Comparing mixed operands yields results equivalent to comparing the operands converted to their common type.

In both definitions, and  are exposition-only concepts also used by  and, respectively.

Semantic requirements
These concepts are modeled only if they are satisfied and all concepts they subsume are modeled.

@1@ and  model  only if, given lvalues  and  of type, following are true:
 * and are equal,
 * , and
 * , and
 * if is convertible to std,  models.
 * , and
 * , and
 * if is convertible to std,  models.
 * , and
 * , and
 * if is convertible to std,  models.
 * if is convertible to std,  models.

@2@, , and model  only if given Let be, the following are true:
 * , an lvalue of type, and
 * , an lvalue of type.
 * and have the same domain,
 * and are equal,
 * , and
 * if is convertible to std,  and  model.
 * , and
 * if is convertible to std,  and  model.
 * , and
 * if is convertible to std,  and  model.
 * , and
 * if is convertible to std,  and  model.