Now I've implemented untested (and uncompiled) versions of the
interval classes. However, they still don't work (even if they do
compile) because I need to add some support routines to LocalTimezone.
Added reference to the stackoverflow page where I got the advice about
making immutable objects by subclassing namedtuple.
I've added the support code (now() and in_future(datetime)) to
LocalTimezone. Nothing is tested and fogzap.py still needs
rewriting. It will break on the new class.
Realized that the now and in_future methods should be static.
Added a duration member to non-ongoing TimeInterval subclasses and
added a comment that the OngoingTimeInterval.subinterval_before cannot
ever return an ongoing interval.
Finished moving the work interval summarization to its own routine and
making that routine more robust (I hope). This has still not been
tested or even run, so there are certainly many bugfixes to come.
Fixed a number of typos
Fixed more typos that were revealed when I ran the
list_unshared_intervals command.
Fixed typos revealed by running list_unshared_work_times (there is
still a known bug, however, even though unshared intervals are
printed, unshared days statistics are not being printed)
Started using pythoscope to generate some tests. It chokes on my
scripts. I've added pythoscope's files to the repo.
Rewrote fogzap slightly to make it more friendly to
pythoscope. Removed old pythoscope files because pythoscope crashed
after I made the changes.
Fixed missing :
Made my two main scripts even more friendly for pythoscope (and
testing in general) - you can now import their top-level functions and
execute them directly with no command-line environment established.
Fixing "improved" script files so they actually work again (I was
handling the command line arguments incorrectly)

I also fixed a typo I hadn't caught earlier in make_fogzap_pickle.py