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.
Dimension.createFilterFunction() will always return an object so this check is not really necessary and could be remove to improve readability.