Do not special-case Color[0] to return None

I cannot see why this should be something, in particular if we want to
rely on anything returned by this method having r, g, b, a attributes.
Instead, raise the correct exception when the color could not be found.
Work around an error occurring when ColorID setting was 0

We have not yet figured out what is setting this to 0, but there have
been reports both on IRC and our forums of this happening. So now the
ugly-but-working approach is to reset it to 1 (the actual default)
whenever 0 or some other invalid index is encountered.
Save settings after changing them

Maybe this was one cause leading to invalid color ID values.