Phlogiston/Data Loading Model


 * 1) For each day since the start date specified in the   file, for each of the Phabricator projects listed in the source file, find all tasks belonging to that project on that day and add each task∙day to the list of task∙days for this team.
 * 2) For each day, find each task in the list that is tagged "Milestone" and construct its complete descendent tree.
 * 3) The tree includes only tasks present in the list of task∙days, so if a child is not present in the data (because it doesn't belong to any projects in the source project list), but the grandchild is, the grandchild will not be included in the tree.
 * 4) A child is any task that blocks the parent in Phabricator.
 * 5) If a Milestone task is not in the source project list, it will not be included in this process.
 * 6) For each task∙day, build a raw category text string from:
 * 7) The name of the Phabricator project the task belongs to, counting only the first project in the list in the source file.
 * 8) So, a task that belongs to several included projects will only be counted once.
 * 9) The name of the relevant projectcolumn in that project.
 * 10) The title of all ancestor Milestone tasks.
 * 11) Go through the   file in   order and, for each line,
 * 12) Look for the matchstring anywhere in the raw category text string
 * 13) If a match is found, set the category of the task to the pretty category title.