Add equality operators to AttrSpec

By adding `__eq__` and `__ne__` methods to `AttrSpec`, we can now check if two objects have the same colors or not.

`__hash__` is necessary to keep AttrSpec hashable.
how about `self._value == other._value` so we catch the flags too