throw custom InvalidEnumArgumentException instead of System.ComponentModel.InvalidEnumArgumentException

The reason for the custom exception is that the use of
System.ComponentModel.InvalidEnumArgumentException is not recommended.

It's marked Obsolete in Silverlight and not supported in Portable
Libraries. The ArgumentException should be used instead, which this
class derives from.

See also
http://stackoverflow.com/questions/7558782/why-is-invalidenumargumentexception-obsolete-in-silverlight-4
throw custom InvalidEnumArgumentException instead of System.ComponentModel.InvalidEnumArgumentException