[Scenario] Containment policy for scenarios

This implements part of nasa/MCT-Plugins#5, as pertains
to user object types introduced in the scenario plugin.
Scenarios may only contain timelines; timelines may only
contain activities or collections; activities may only
contain decisions or other activities. Finally, decisions
may only exist among a sequence of sub-activities.

These containment rules differ in certain cases from
original specification, based on subsequent refinements
to the way user objects are modeled. Specifically:

* There is no type distinction between Activity and
  Sub-activity
* Decisions were not included in original containment
  specification.

Rules enforced by composition policy.
[Scenario] Merge in containment policy
[Scenario] Validate input for Activity Wizard

Listen for changes to input fields when creating a new
Activity and disable the Create button when invalid data
(text that cannot be parsed as a time) has been entered.
Addresses nasa/MCT-Plugins#45
[Scenario] Validate input for Decision Wizard
[Scenario] Add duration constraint system

Introduce DurationConstraintSystem, responsible for tracking
changes to objects with DurationCapabilities and enforcing
constraint rules. Allows this behavior to be separated from
the user object hierarchy and applied only to appropriate
sub-trees (i.e., activities visible in a timeline view.)
[Scenario] Hook up duration constraint system

Build a duration constraint system and hook it up
to drag controls. Also fixes some bugs in the logic
of DurationConstraintSystem itself.
[Scenario] Prune obsolete activity constraint code
[Scenario] Enforce sensible activity bounds

Do not permit activities to have negative start times,
or negative durations (end before start)
[Scenario] Enforce constraints when Timeline View created

Enforce the full constraint system for a Timeline View
as soon as the Timeline View is created. This prevents
the user from visualization any nonsensical or
contradictory activity timeline, even if it is
permissible to construct such a timeline by way of
using other composition tools (Info View, create
wizard, drag-drop to add multiple parents...)

This is primarily intended as a quick-fix to
nasa/MCT-Plugins#59 although it also reduces the
practical severity of nasa/MCT-Plugins#42
[Scenario] Fix containment bug

Activity type was incorrectly filtered out of
create menu for Timeline Views; this restores
that option.

Similarly, Activity Timeline was incorrectly
available as a create option in the same
context. This has been removed.
[Scenario] Revert accidental commit

Prior commit accidentally removed unrelated files;
these are restored here.
[Scenario] Merge containment fixes
[Scenario] Save constraint changes

Track components actually touched by constraints,
and invoke save on any which are changed when a
Timeline View is loaded. This ensures that Save and
Save All are available as soon as the view is
loaded, so that those automated changes aren't
lost.
[Scenario] Enforce constraints in scenario view

This begins to adapt the constraint-enforcement
automation employed by TimelineView such that it
is also obeyed (and does not disrupt) the Scenario
View.
[Scenario] New timeline layout rules

Introduces (but does not integrate) a new layout
class for timelines, which manages row positioning
as well as vertical positioning.

This commit includes code for purposes of debugging
this layout.
[Scenario] Explicitly sort rows in timeline layout
[Scenario] Pack timeline layout more aggressively

When laying out a timeline and trying to pack
components upward, move them to the highest row
where space can be found.
[Scenario] Remove unneeded packing pass in timeline layout
[Scenario] Start with earlier-added components near top
[Scenario] Animate timeline layout