fix date shifting issues

due to rounding error, a customer's date that should have been
30 days from the new start of the course was placed at
29.999999999999996 days, which was truncated to 29, which was then
shifted back 6 days to fall on the correct day of the week.

also, announcement post delay dates were not getting shifted
at all.

test plan:
follow the scenarios in CNVS-14130 and ensure that
 * announcement post delay dates are shifted
 * some dates don't mysteriously end up a week earlier
   than they should

fixes CNVS-14130

Change-Id: Ice5bd3be0ddee0dec2af7b740c568750dd3c4ab8
Reviewed-on: https://gerrit.instructure.com/38223
Reviewed-by: James Williams  <jamesw@instructure.com>
Tested-by: Jenkins <jenkins@instructure.com>
QA-Review: Clare Strong <clare@instructure.com>
Product-Review: Jeremy Stanley <jeremy@instructure.com>