Ignore DST for day, week, month and year diffs

Diffs across timezones behave better now:

* diffing days, weeks, months and years units ignores DST, meaning you can take the two local times (they are in potentially different timezones), and then do the arithmetic
* diffing hours, minutes, seconds and ms takes DST into account, meaning you take the two utc times, and then do the arithmetic

That mostly worked up to now, excluding some very special month, year cases and all day, week cases (across dst). This should hopefully fix #626, #606, but the problem is that tests expect DST to happen on particular dates (USA DST), so I'm not sure how to tackle this for now :)