DDF-103: add localised dates to metrics

There isn't a way to say "give me a localised/localized representation for day and month", so this
also provides years.

Also refactor some methods, to make it easier to see what is happening and to support future
configurability.
DDF103/159: Add unit tests for localised dates, and for generating URLs that contain the whole week/month/year.
DDF-159: Avoid missing the last day of the week/month/year in metrics reporting.

DateMidnight is essentially the start of the day, but we need the end.
DDF103/159: First round fixes for review comments

Remove unwanted low level tests and make helper methods explicitly private.
Chain urlEncodeDate() methods

Thanks to Hugh Rodgers for the review.
DDF103/159: Address review comment for repeated code

Thanks to Hugh Rodgers and Phil Klinefelter for the review.
DDF103/159: Fix bad merge and coding style issues
Merge pull request #32 from bradh/ddf103a

DDF-103/159: add localised dates to metrics, fix date range