Under the as-if rule, we can directly implement the array overload for
std::swap. By removing this circular dependency where swap is
implemented in terms of swap_ranges and swap_ranges is defined in
terms of swap, we can split them into their own headers. This will:
(a) limit the surface area in which Hyrum's law can bite us;
(b) force users to include the correct headers;
(c) make finding the definitions trivial (swap is a utility,
`swap_ranges` is an algorithm).
Minor minor nit: might as well remove this comment here.