Change GeneralizedNewtypeDeriving safety check.
Now, instead of looking at a class's roles, the GND check looks at all of the methods in the class individually. This has the advantage that sometimes, we can use information about the derivation requested during the safety check. For example, we can now derive (IArray UArray), whereas the previous check prevented this.
Showing with 112 additions and 22 deletions