Add flag -fwarn-duplicate-constraints

This fixes Trac #7541, and is on by default.
Use -fno-warn-duplicate-constraints to switch it off.
Minor refactoring plus comments
Improve HsSyn pretty-printing of instance declarations (fixes Trac #7532)