NotImplementedException Cleanup

This PR is largely cleanup of stub methods that provide no implementation and only throw the `NotImplementedException`.  These methods fool people into thinking that their port works at compile time, only to find exceptions at runtime.  See #1978.

I cleaned up `NotImplementedException`s in two ways:

 - Methods that purely had no implementation on any platform were commented out.
 - Fixed cases where a `NotImplementedException` was incorrectly used to defined an unexpected case in a switch statement.  We use `NotSupportedException` or `ArgumentException` where appropriate.

There are cases where the unimplemented code is in the middle of a larger statement, I left these alone.  Also places where the `NotImplementedException` occurred in an overridden method were left in as well.

I left the new content pipeline code alone...  it has a lot of `NotImplementedException`s, but it is still in heavy development.

While I was at it I implemented a few unimplemented methods that i came across and knew the right fix.

 - GraphicsDeviceManager.BeginDraw()/EndDraw()
 - DisplayModeCollection.GetEnumerator()
 - EffectParameter.GetValueMatrixArray()
 - EffectParameter.GetValueTextureCube()
 - EffectParameter.SetValue(Quaternion)
 - EffectParameter.GetValueQuaternion()
 - AudioCategory.Equals() and related methods.

None of this changed existing functionality, so it should be safe to merge if all the platforms successfully compile.