add flattenDep helper to simplify_deps

flattenDep will flatten list [AllOf Deps:d1,d2] to
Deps ++ [d1,d2].
"test" use fixed.
Merge/Dependencies.hs cleanup
cabal flags support

changes:
1). EDep is now list-like monoid plus it supports some Set operations:
  intersect, difference, null
All operations are run on each edep field separatelly and deps
simplified after operation.
  (<>) works like union
2). Resolve haskell deps works on [Dependency] instead of
PackageDescription.
3). finalizePackageDescription returns cabal packageId

Future work:
  Currently only all flags, zero flags, and one setted flags are
  checked. So we probably loose some variantion, so algorithm can
  be upgraded to support multiset flags, however it should be done
  lazily and algorithm should be finished as early as possible if
  it's guaranteed that we will have no additional deps.

  Currenlty package that uses flag to run on a different compiler
  version can lead to the problems (not checked yet).