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.