This patch rewrites the internal date- and time-drawing helper to use
plain arithmetic instead of branching on the values it draws. The
generated distribution is unchanged, but "dates()", "datetimes()", and
"times()" are now much more efficient under symbolic-execution
backends such as crosshair-tool, which can now solve for a specific
date directly rather than enumerating candidates (issue #4759).
The canonical version of these notes (with links) is on readthedocs.