fix more bugs related to MONTH and YEAR calcs

The issue was that we didn't leverage a calendar; this is provided by
python-dateutil's relativedelta object. I now use this for all
calculations in the module (thus eliminating need for timedelta).

It lined up pretty nicely; only part that didn't is the silly fact that
relativedelta doesn't support millisecond directly, so I had to do a
microsecond -> millisecond conversion.