Refactor the gantt task model to avoid work in the constructor.

* Introduce a factory to do initial calculating.
* Refactor all new Task() calls to use the factory, maintaining BC.
* Change task constructor signature, to be not much more than a glorified accessor.



Why? I have a need to introduce a different set of behaviours (externally fixed duration tasks, no auto pushing tasks out according to their dependencies).
This PR allows the wiring up to be separated, retaining the previous behaviour by default - other factories can wire up tasks differently.

Not really sure if it's more appropriate as a stand alone factory, or better suited to GanttMaster at the moment - went standalone for simplicity.