Rewrote ChannelMaskPlugValueWidget.
Rewrote ChannelMaskPlugValueWidget.

Using a MenuButton rather than a MultiSelectionMenu means we don't have to manage state anymore, because we just generate the menu on demand rather than be trying to always sync external state into the MultiSelectionMenu at the right moment. I have a feeling this is the case for many uses of MultiSelectionMenu, and since it has a pretty inconsistent API, my intention is to remove use of it wherever possible until it is a better candidate for refactoring/removal.

This also fixes the following bugs :

- Failure to correctly handle exceptions occurring when computing plug values. For instance, this prevented the ImageWriter NodeUI from displaying if an invalid image was piped into it.
- Unterminated recursion when choosing an item from the menu.

ivanimanishi/gaffer,johnhaddon/gaffer,GafferHQ/gaffer,ivanimanishi/gaffer,chippey/gaffer,andrewkaufman/gaffer,lucienfostier/gaffer,hradec/gaffer,hradec/gaffer,chippey/gaffer,johnhaddon/gaffer,GafferHQ/gaffer,ImageEngine/gaffer,ImageEngine/gaffer,andrewkaufman/gaffer,andrewkaufman/gaffer,appleseedhq/gaffer,andrewkaufman/gaffer,johnhaddon/gaffer,boberfly/gaffer,appleseedhq/gaffer,chippey/gaffer,ImageEngine/gaffer,lucienfostier/gaffer,lucienfostier/gaffer,GafferHQ/gaffer,johnhaddon/gaffer,johnhaddon/gaffer,GafferHQ/gaffer,boberfly/gaffer,ivanimanishi/gaffer,ImageEngine/gaffer,lucienfostier/gaffer,GafferHQ/gaffer,andrewkaufman/gaffer,chippey/gaffer,hradec/gaffer,appleseedhq/gaffer,appleseedhq/gaffer,boberfly/gaffer,ivanimanishi/gaffer,hradec/gaffer,hradec/gaffer,boberfly/gaffer