BUG #15053. Fixed issues when coloring with a no longer valid array.

When user was coloring using an array
and then he changed the pipeline such that the array is no longer
available, the "Color By" combo-box ended up showing "Solid Color",
though on underlying pipeline, the user's previous coloring selection is
indeed being used. This manifested as the color legend staying visible
even when the color-by widget was showing "Solid Color".

Since we don't want the widget to change the underlying pipeline's state
if an array disappears due to changes in the pipeline, we must update
the widget to continue to indicate that we're coloring with an array
and possible mark it saying that it's not present currently.
Furthermore, if the user switches the color array after that using the
UI, he should not be able to go back to the now no-longer-present array.

This fix addresses this. A no-longer-present array is now indicated in
the 'Color By' widget with a suffix "(?)". Also when the user selects
another array to color with, that entry will automatically disappear
from the 'Color By' combo-box.

Change-Id: Ifc8afd70476988843193cbe32561763f64fe08cb
HACK: Fix duplicate entries in Color By.

We sometimes end up with duplicate entries. Overcome it for now.
We need a proper fix in vtkSMArrayListDomain/vtkSMRepresentedArrayListDomain/
vtkPVDataInformation.  for now, just do this. To reproduce the problem,
skip the uniquifier check, and the load can.ex2, uncheck all blocks,
and check all sets. The color-by will have duplicated ObjectId,
SourceElementId, and SourceElementSide entries.

Change-Id: I026218602671c6777483c29d1ada6918461c4bd5
Merge topic '15053_fix_coloring_with_missing_arrays' into next

dbafed2a HACK: Fix duplicate entries in Color By.
49f33566 BUG #15053. Fixed issues when coloring with a no longer valid array.