Make maximal adjustment in breadthfirst layout optional and automatically detect shifting cycles
Make maximal adjustment in breadthfirst layout optional and automatically detect shifting cycles

- `options.maximal: true` replaces `options.maximalAdjustments >= 1`
- If `options.maximalAdjustments >= 1`, then use the maximal adjustment procedure to not break old code.  The new approach should provide an equal or better experience than the manual number of iterations approach.
- The new approach enqueues the outgoers of a shifted node.  This propagates down s.t. the edges should be all downwards pointing for a DAG.
- An warning is printed for a non-DAG for `maximal: true`.  The layout continues, but the maximal adjustments bail out.
- Overall, this revision of the maximal adjustment procedure avoids an infinite loop for non-DAGs.  The old approach was to just always bail out after `options.maximalAdjustments` iterations.

Ref #2004

cytoscape/cytoscape.js,cytoscape/cytoscape.js