Merge b737a4 into the 7.6 branch, curing Trac #7748

The caching of goals in the constraint solver led to a
equality-constraint loop even in a really simple program!

    commit b737a45391201fd475b89227ed1d7c9b72b24eea
    Author: Simon Peyton Jones <simonpj@microsoft.com>
    Date:   Fri Aug 31 10:05:03 2012 +0100

    More simplifications to the constraint solver

    * inert_solved becomes dictionaries-only, inert_solved_dicts

    * inert_solved_dicts is used only to cache the result of uses
      of a top level instance declaration, just like inert_solved_funeqs

    * That in turn simplifies xCtFlavor and rewriteCtFlavor, because
      they no longer need a "should I cache" parameter.  (Moreover the
      settings for this parameter were very subtle; it's easy to get
      loops if you cache too much.  Caching only top-level instance
      uses is much safer, and eliminates all these subtle cases.)
Merge 1353d1 into the 7.6 branch

(without this I get an ASSERT failure)

    commit 1353d1ef98603a1bff1f8eb181d1368e934b3647
    Author: Simon Peyton Jones <simonpj@microsoft.com>
    Date:   Thu Dec 20 20:13:36 2012 +0000

    Fix over-zealous ASSERT in TcUnify