[Scenario] Avoid infinite loops when constraining Activities

It is possible to construct activity/decision object graphs
for which constraint rules are unsatisfiable, by, for instance,
creating cycles, or making one activity the subactivity of
others. This occurs in nasa/MCT-Plugins#31.

Here, we bail out early of activity constraints early when
these situations are detected:

* In constrainToDuration(), used to push or shrink children to
  fit inside their parents, a set of component ids for
  actively-constrained components is maintained. This is used
  to detect cyclical constrainToDuration calls and exit early.

* In constrainDecisions(...), there is a loop used to push or
  pull other components until there is nothing left to move.
  Since it is possible to construct an object graph with
  contradictory push/pull necessities for decisions, this
  loop could potentially execute indefinitely. To avoid this,
  a timer (100 ms - reasonable upper bound for acceptable
  latency) is used; if the constraint situation is taking
  unacceptably long to resolve, exit early.
[Scenario] Recreate timeline when top-level activities overlap

When moving activities within a timeline view using mouse drag
controls, the user can cause two activities to overlap. This is
permissable, because top-level activities of a timeline are
allowed occur concurrently; however, this looks strange as the
visual components occupy the same space on screen.

The timeline view previously addressed this possibility only
on view instantiation: Extra 'blocks' were created such that
concurrent activities could be placed on lower rows. With
this change, this behavior may now occur whenever a change to
an activity is made, by recreating the majority of the view
(as would happen during instantiation.) For performance and
useability reasons, this may only occur when a drag gesture
has completed (meaning that activities may still overlap
while a drag is ongoing). Additionally, a check is performed
to detect overlapping activities, to avoid re-creating the
view if it is not necessary.

This addresses nasa/MCT-Plugins#27