[Stacked Bar] - Supporting stacking on negative values

Handles stacking by placing stacking negative values separately below 0 and stacking positive values separately above 0.

Closes #813 
consider re-writing in a functional style for clarity + conciseness
```
var dataset2KeyValue = (dataset: Dataset) => dataset.data().map(d => { return {key: key(d), value: value(d)} });
var keyValueArraysPerDataset: KeyValuePair[][] = this._getDatasetsInOrder().map(dataset2KeyValue);
var filterPositive = (arr: KeyValue[]) => arr.map((a: KeyValue) => a.value >= 0);
var filterNegative = (arr: KeyValue[]) => arr.map((a: KeyValue) => a.value < 0);
var positiveDatasets = keyValueArraysPerDataset.map(filterPositive);
var negativeDatasets = keyValueArraysPerDataset.map(filterNegative);
```