Mixin providing abstract section handling for various bits of TrackRecord code. Sections are defined in terms of an array of tasks in some pre-sorted order. Going from one task to the next, in order, may cause a new project and / or customer to be encountered related to that task; in such a case, the task is deemed to mark the start of a new section.
A similar concept is used for groups, but groups are based on task names. If a task title includes a colon character, then its group name is the title up to but excluding the first colon; else the group name is the whole task title. This is most often useful when used with bulk task import.
Both sections and groups are typically used for visual purposes when showing things like reports or timesheets. The calling code can associate data with group and section info, allowing it to independently maintain related information (such as as per-section worked hour totals in reports) if so required.
30-Jun-2008 (ADH): Created. 09-Aug-2013 (ADH): Complete API redesign to fit new fast report mechanism. Much cleaner now.