Improve usage of dates and datetimes.

List pytz as a dependency for this app. Rename and reorganize existing
dependencies to make it more clear which ones are written in Python. Update
existing factories to more effectively use dates and datetimes.
Finish adding business logic to category_tools.py

Flesh out the `category_items_available()` function. Refactor existing code to
reduce duplication.

`category_tools.py` is missing a significant number of doctests and/or unit
tests.