Allow data source `setQueryParam` method to take hashes of attributes

Sometimes we want to set more than one property at once, without firing more than one change event. The easiest way to do this is in a single set call.
Ensure fetch of a collection completely resets the state

Retained references to selected models need to be deleted as they may no longer exist in the new collection.

Fetch needs to be called with `reset` option to ensure that old models which are no longer in the returned dataset are removed.
Use correct collection moethods instead of referencing internals

Using collections' own internal references for models is not recommended as it bypasses mutation events. By using public interface onto collections then we can ensure that events are fired, and views which are dependent on the collection contents can be updatd as appropriate.
Standardise date formats in data-source model when constructing query string

By having a single place to normalise dates we can avoid having to care about it anywhere else. We can pass dates in any valid format, and the model will magically parse them into ISO8601
Cleanup of long-winded method

This should have been done in the earlier commit/PR when it was created, but it got missed.

There's no need for the apply dance, we can just call `lastDefined` with an array, and `pluck` is way more consise.
OCD
Add basic date picker implementation
Re-render table when collection is reset

If date pickers are changed to expand/reduce the dataset, then the table should change to reflect this.
Ensure dates are always ISO8601 format

For compatability with backdrop queries, and to avoid timezone ambiguity
Clean up getPeriod methods

Most of the collection internals being referred to didn't exist. Make it a lot simpler, and draw a distinction between axis-period and period
Read period value using graph.getPeriod

Reading straight from the model is no longer valid since the period is now configured in the collection data-source. Calling the graph's method provides a standard interface for accessing this data.
Increase the axis period of graphs if there are too many ticks at the configured period

Setting date pickers to a large date range for weekly data causes the x-axis to render with hundreds of ticks. Increasing the axis-period if there are a lot of ticks allows an appropriate number of ticks to be displayed.
Store a value for the period on the graph

The loops in `getAxisPeriod` cause a massive performance hit when called as part of a `mousemove` event, since it's called in every `modelToDate` call. By storing a value and resetting when the collection changes we can mitigate this.
Allow configurable start dates for date pickers

Default start date is set to 2013-04-01, but this is configurable on a module by module basis when we know we have larger or smaller datasets.
Added bare-bones test script for collaboration
Add missing getPeriod() function to graph object in test
Add tests for datepicker
Round start and end dates to "nice" period bounds

When setting start and end dates on weekly data, we want to round the dates to nice week bounds in order to avoid getting "no-data" entries at the start of the dataset.

Also cap the end date at the current date, so that we don't end up with blank weeks/days at the end of the dataset
Set selected date in "from" date picker to start of collection

So the currently selected state of the default datepicker roughly represents the state of the collection.
Round date range end dates to "nice" values

If graph period is weekly, then round the end dates to the nearest monday.

When initialising date range, set end date to end of dataset values.