Refactoring for derived Read
There are no functional changes in this commit. But the code for
derived Read is refactored to make it tidier --- and also to make
it very easy if we want derived Read to parse the prefix form of
infix ocnstructors.
For example,
data T = Int `T1` Int
According to the H98 report, the derived Read instance will parse
infix uses of T1, but not prefix uses (T1 4 3). It's arguable that it
should parse both -- and easy to implement, but it would cause a little bit
of code bloat.
Similarly records.
Anyway this commit doesn't implement the change; just makes it easy
to do so.