Improve specialized Hoopl module
GHC uses Hoopl to perform some of the Cmm-to-Cmm optimization passes, but instead of relying directly on Hoopl library GHC uses its own specialized module (see [[GhcFile(compiler/cmm/Hoopl/Dataflow.hs)]]). Interface of that module, as well as its internal implementation can be improved. Right now interface places responsibility of maintaining some of the invariants on user. It also ignores differences between forward and backward analysis. This wiki page gives full detail about proposed design changes.