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

https://tools.codice.org/jira/browse/DDF-103

https://tools.codice.org/jira/browse/DDF-159

During testing of localised dates (DDF-103), found problem (DDF-159) where the last day of the metrics period (week, month, year) is not included in the date range. Fixed it by changing to the end of the day (using DateTime), instead of the start (using DateMidnight)

In fixing localised representation, here isn't a way to say "give me a localised/localized representation for day and month", so this also provides years in the format.

Also refactor some methods, to make it easier to see what is happening and to support future
configurability. Added unit tests.