Lightly refactor XHair to take a color factory instead of a Trace. This
enables easier testing since we don't need to construct a full Trace
object to construct an XHair. It also fixes the confusing behavior where
you can pass a Trace into a XHair, but not add the XHair to the Trace's
set of XHairs.
Implemented some tests for XHair for the more involved methods.
Lightly refactor XHair to take a color factory instead of a Trace. This enables easier testing since we don't need to construct a full Trace object to construct an XHair. It also fixes the confusing behavior where you can pass a Trace into a XHair, but not add the XHair to the Trace's set of XHairs.
Implemented some tests for XHair for the more involved methods.