Refactor View#formatPeriod to use standard format methods
Use updated date range format methods for kpi view
Diplsay date/date ranges in summary section of grouped graphs by default
Only add hover state to grouped-timeseries models that have values
Implement timeshifted graphs
Allow group mappings and timeshifts

Add any mapped groups to the data flattener in grouped timeseries so that their values are accessible later when they need to be summed
Check the individual groups to establish if a grouped graph has data

The main `valueAttr` can be null for the whole colleciton, but the grouped values can still have data. Check those.
Fix table tests to handle timeshifted keys
Control when grouped graphs display percentages in their linelabels

Want to only display percentages where it makes sense to consider the values as a proportion of a total. This is taken to be:

* When there is a total line
* When the graph is stacked

Other line graphs are assumed to not display data which makes sense to be shown as percentages. e.g. Site visitors on /performance/site-activity
Add the in-stack selection line to stacked graphs
WIP - remove unnecessary collection methods
Update the module schema to use a data-source

The allOf in the period property on the query-params is needed to get
around the fact that an enum cannot be required=false in our jsonschema
lib. By defining it this way we can force this to work.

Schemas that explicitly required a period have been dropped and in the
case of availability removed altogether as it only added that field.
Migrate config to use data-source parameters

I have written a script that migrates the config
(tools/migrate-config-to-data-source.js), it works by picking out any
parameters which we formally used by the collections (both loose and
inside of query-params).

The script will also try and migrate some of the defaulted or derived
values into the config to be more explicit and decouple the data-source
from other parts of spotlight.
Add in new data source model

This model will receive the standard data-source properties from a
module and generate urls for use in the collection.
Retrofit data sources into modules

We can remove a lot of the queryParam functions as the data-source
parameters in modules now contain the required parameters. This means
they are already known about in the collections rather than needing to
be passed through. Maps are maintain when modules need to collect
specific data.

The period should now be exposed through the collection rather than the
modules delving around in their options.

The realtime module should always cut off at 24 hours, so rather than
storing a phoney period and duration hardcode it.
Only realtime wants to be sorted by _timestamp

This sorts with the oldest record being at index 0, which was breaking a
whole bunch of other collections.
Fix Collection tests

queryId is not a thing anymore so we can just fallback to the Backbone
fetch fn. This also means the tests got nuked. I looked this param up
and it was created in Limelight for some suprious reason involving
storing query parameters based on a query id. We definitely don't do
that anymore.

There was a bunch of duplication in the url tests where it treated
multiple arbitary params differently to params like filter_by. I don't
know why they should be considered differently and they both follow the
same path in the code now, so I killed the tests.
Remove extensions/views/graph/headline

An ack around our project shows that this file is not being used
anywhere, so let's kill it.
Fix Controller tests

The data-group and data-type are now nested inside of a data-source,
update the tests to reflect that.
Fix JourneyCallout tests

This should have been using the correct collection to test against, this
was shown up because the JourneySeriesCollection stores the dataRange it
will request.

A set of axes needs to be defined for the collection to be able to
flatten the data.

We need to shim getMoment so we can fixed what now is so the tests don't
go crazy.