WIP rewrite of the CFG/Dataflow analysis
Interim checkin, possibly working.
Add a unique exit node
Implement the CFG and dataflow analysis together, but export separate cleaner modules

This lets them see everything they need but lets us hide all of the
implementation details from the user.  The details are still available
from LLVM.Analysis.CFG.Internal, with the usual caveat that the interface
there is unstable.

Hopefully the public APIs will see much less churn...
Add a new function for retrieving dataflow analysis results

This adds a special helper, dataflowResult, to get the result at the
combined exit node.  The old function was renamed dataflowResultAt, to
get the result at a particular instruction.

This makes the common case easier and other cases possible.
If a fact is missing in a dataflow result, return top

Facts will not be available for unreachable code, so return
top in those cases.
New tests for the NoReturns analysis
A much improved NoReturns analysis using the new dataflow framework
Build a bit more as we improve the dataflow framework
Haddock fixes, clean up warnings

Also remove some spurious Show constraints from debugging
Remove some stray doc comments
Make DataflowAnalysis a data type instead of a typeclass

This requires far fewer type system extensions (especially for users).
No longer requires FlexibleInstances, MultiParamTypeClasses,
FlexibleContexts, or TypeSynonymInstances.

This also simplifies a few contexts.  Dataflow facts must still be
instances of BoundedMeetSemiLattice, but that is Haskell98.
Port ScalarEffects to the new dataflow framework
Remove the MeetSemiLattice dependency

Just have top and meet be normal functions/object fields now.  This
makes it easier to have 'top' (and meet I guess) depend on run-time
values.
Remove some internal contexts

These are now carried in the DataflowAnalysis GADT so we don't
need them to be passed explicitly.
Add support for an initial entry fact different from top

This can be very useful for some analyses, and it doesn't cost
much to add.
Move a type definition from LLVM.Analysis.Types to LLVM.Analysis

Getting rid of the Types module - not useful
Removing .Types
Add backwardsDataflowAnalysis
Remove .Types from cabal