Add DateStates: invisible; ready; due; late.

Also adding tests for date logic, and implementations for those tests.