Add swap functions.

Also add secret swap-throwing status-checking function.  Regroup an old
test.
Add tuple "get" functions.
Add "conj" and unary +, -, and ~ operators.

Add the unary + and - operators, with their expected meanings of
identity and additive inverse.  Add the ~ operator as a shortcut for
complex conjugation.  Add "conj" as the common way to call complex
conjugation, and as a compatibility measure with other (hyper)complex
types.
Add "real" and "imag" member functions.

Add the inspector and mutator versions of the "real" and "imag" member
functions to "complex_it" and "complex_rt" (both cases).  This imitates
the interface from std::complex.
Add "lower_barrage" and "upper_barrage" mutators to "complex_it."

Add mutator versions of the "lower_barrage" and "upper_barrage" member
functions in "complex_it."  Change unit test to match the mutability
checks from the "complex_rt" version of the unit test.  Add to both
versions of the unit test mutability checks for rank-zero objects.
Add "unreal" member functions.

Add inspector and mutator versions of the "unreal" member function to
"complex_it" and "complex_rt" (both cases).  The inspector version
returns all the imaginary components at once (with a zero real part)
while the mutator version changes those components (leaving the real
part untouched).