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.
This doesn't check for two calls to chart draw.  Also, I don't think you need to toHaveBeenCalled() if you are then following up with a check on calls.length.  I think lines 374-376 can be replaced with (again, I don't think the extra variable is very useful here):

expect(chart.draw.calls.length).toEqual(2);
expect(table.draw.calls.length).toEqual(2);