It seems PHP's date::setDate function doesn't do what we want when
you hand it a negative integer so we need to override a little more
of it's behaviour. We have to make sure that date::modify is not
called with a days greater than the month we might land in when we
add a number of months to it.