ICS-58: Implement ChartGroup, remove clutter from global namespace and general decoupling

This is a pretty chunky pull.  The main functionality is the new insight.ChartGroup class, which is a container for charts and tables. It handles the events they fire, wiring them up to Crossfilter.

Chart init() has been refactored so you just call chart.draw() (I removed redraw()),which initializes the chart lazily if needed, which is the pattern we've been using more recently.

Charts can be drawn without a container, or the container.draw() can be called if there are multiple charts.

Logic for filter functions has been moved into Dimension, where it fit better.

I had to update all examples (and lots of tests), hence the large number of files changed.
We could make this more compatible with earlier browser versions which don't have access to indexOf?

Having said that, we may already be relying on more recent javascript features such as Array.map and Array.forEach in which case indexOf is probably fine to use.

We should really decide what browsers we are supporting and include that in the initial release notes.  I'll add a sub-task to the Jira release task to cover this.