PM-714  First attempt at reducing the edges in the executable workflow
based on doing a DFS, and doing a least common ancestor traversal when
a node is come across again in the DFS traversal.
PM-714 We now constrain the findLCA search on basis of mindepth of all
the parents of the to node.  this prevents unnecessary traversals back
to the root for LCA.

Also the LCA procedure can only be called on the child in the DFS only once.
PM-714 we now do LCA's between all parents of a child and don't
consider the parent child edge in the initial part of the LCA.
PM-714 changed the function prune to reduce.
added a test class
PM-714 Added support for multi rooted DAG's
PM-714 Added handling for multirooted graphs, and also some
optimization for bypassing LCA.

However, this optimization does not kick in fully, because all the
jobs don't have a level associated with it beforehand.
PM-714 We now assign levels first before doing a DFS for each
root. However, the approach does not scale for large workflows, our
planner performance test.
PM-714 disabled the call to reducing workflow edges.
Merge remote-tracking branch 'origin/master'