ChannelMaskPlug

* Added a ChannelMaskPlug
  The ChannelMaskPlug derives from StringVectorDataPlug and provides a method for intersecting a vector of channel names with the value of the plug. Also provides a method that will return the index of a given channels.

* Added ChannelMaskPlugValueWidget
  The UI element for the ChannelMaskPlug. This UI which is registered to the ChannelMaskPlug requires an input as a parameter to it's constructor. Using the input's channels the UI populates a menu that allows the user to select a set of channels from it.

* Added Test cases for the above.

* Requires the MultiSelectionWidget.