Extract and encapsulate Celestial and Vessel

No smart OO for the time being.  Please review usages of ``kept_`` carefully.
For a `set`, `if (kept_.erase(vessel))` is clearer.