Implement Stacked and Clustered Bar Plots 

They descend newStylePlot, which implements the new dataset api.

TODO:
- [x] Make issue to track smarter stacking logic (account for out-of-order case)
- [x] verify jsdoc
- [x] make issue to track adding animations
- [x] make issue to track enabling horizontal mode
- [x] add more unit tests
- [x] make issue to change accessors on NewStylePlot so they get seriesKey
- [x] move the quicktests into standard quicktest format (.js)

Example usage:
```
data1 = [{name: "jon", y: 1, type: "q1"}, {name: "dan", y: 2, type: "q1"}, {name: "zoo", y: 1, type: "q1"}];
data2 = [{name: "jon", y: 2, type: "q2"}, {name: "dan", y: 4, type: "q2"}, {name: "zoo", y: 2, type: "q2"}];
data3 = [{name: "jon", y: 4, type: "q3"}, {name: "dan", y: 15, type: "q3"}, {name: "zoo", y: 15, type: "q3"}];

xScale = new Plottable.Scale.Ordinal().domain(["jon", "dan", "zoo"]);
yScale = new Plottable.Scale.Linear();
var colorScale = new Plottable.Scale.Color("10").domain(["q1", "q2", "q3"]);

var xAxis = new Plottable.Axis.Category(xScale, "bottom");
var yAxis = new Plottable.Axis.Numeric(yScale, "left");
stackedBarRenderer = new Plottable.Plot.StackedBar(xScale, yScale)
  .addDataset("d1", data1)
  .addDataset("d2", data2)
  .addDataset("d3", data3)
  .project("x", "name", xScale)
  .project("y", "y", yScale)
  .project("fill", "type", colorScale)
```
Should we really be changing the data they pass in? Is there no way around this?

I can imagine someone plotting some data, then saving in somewhere with json, and being very annoyed that a bunch of `_PLOTTABLE_PROTECTED_FIELD_X` have appeared.

A better solution would be to wrap them:
```typescript
interface WrappedData {
  x: number;
  data: any;
}
```
Though I'm not sure how difficult that is.