Refactor ColorConverterSmartTagAction

In addition to vastly reducing duplication,
this also fixes a bug.  Converting from rgb
or hsl to hex would show the wrong value in
the title.  (The code forgot to set Format)

This also fixes conversions from RgbHex6 to
RgbHex3, due to a similar issue.

The underlying issue is that ColorFormatter
.FormatColor() takes a fallback format, and
inly uses it if the model's format is Hsb.