Merge branch 'upstream' into develop
Allow manual axis ranges

Allows the user to set the axis range min/max.
Filter out off-screen bars

Prevents any data values which do not appear in the axis from being
drawn.

The BarSeries only work with ordinal axes at the moment, so this will
need updating when that gets fixed.
Update change log
Adds docs to axisRange
Added custom jasmine matcher

The matcher checks that two arrays contain the same elements without
taking the order of elements into account.
Fix for interactive axisRange

Sets the axis range initially, before defaulting to the d3 scale to
control zoom/panning.
Added tests for appyFilter
Proposed updates to PR 241
Testing filtering on an empty dataset
Grouping tests for empty dataset
Fix everything!

Now works for
- Ordinal axes: with a start and end of range as the category name
- Interactive axes: Starts initially zoomed to the range, but allows zoom
  and pan in/out without breaking ticks
- Filtering: An axis with an auto-range will scale to the new data size
  if that data is filtered.

We purposefully do not auto-scale a value axis if the key axis has been
range-filtered, in case the axis has interactions enabled, and also to
give an indication of the scale of the filtered data in comparison to the
overall dataset. The value axis can still have a range manually set if
need be.
Merge pull request #1 from niksoper/tom-develop

Update to Axis jsdocs
Fix unit tests

Removes the mocking, as we were no longer mocking the right thing. It
proves easier to assert that the axis range can be set than to try and
mock a collection of other things.
Fix missing axisRange on linear axes

We were defaulting to the axis findMax, which didn't take account of the
ranges we've set.

We now use rangeMinimum/Maximum (the functions overwritten by the
axisRange setter) when using our custom linear domain, defaulting them
to [0, axisStrategy.findMax(axis)] (as it was before).
Fix interactive linear axis

Default value follows the axisRange provided by the user, but then goes
back to using the scale.domain(), to let us do panning and zooming
properly.
Address review comments

Uses the common util method for arrayContains, and sets the domain on
the scale instead of the axisRange.
Added DataProvider as base container for all InsightJS data
DataSet inheriting from DataProvider

Fixed failing tests and removed DataSet tests covered by
DataProvider.spec.js
Temporarily assigned the DataSet.getData function to be
DataProvider.extractData
Improve test coverage for DataSet

Added test to check call of DataSet.group for one-many groupings