Draw charts with no data

 - Introduced insight.DataProvider as base class for insight.DataSet and insight.Grouping
 - Improved test coverage for Dimension and Grouping
 - Improved auto margin calculations to handle no tick values
 - Workaround issue where crossfilter fails for one-to-many dimensions with no data
 - Decoupling ChartGroup and Dimension
 - Introduced a new insightTesting namespace including a custom matcher for comparing arrays whilst ignoring ordering
This is marked as virtual because it is intended to be overridden by sub-classes.  The DataProvider class is not actually treated as abstract because we are using it directly as a wrapper for an object array within [Series](https://github.com/niksoper/insight/blob/feature/deferred-data-loading/src/charts/Series/Series.js#L25). So the concrete implementation is right to include here.