Added the TaskFile class with scan() & save() methods.

The scan method goes through the data file ensuring that it is
formatted correctly, and simultaneously creates an index containing
the starting and ending file pointer positions for each group. This
way, only the necessary data can be loaded for use.

The save method uses the above index to write data into a temporary
file, which at the end of the process replaces the original (in an
attempt to prevent file corruption). A list of groups is created
from the above index to determine the order in which data is
transferred, with updated and deleted groups handled.