More generic way to add graphs to reports

![report-graphs](https://f.cloud.github.com/assets/249606/617160/0209298e-ce8a-11e2-8726-d33539e51670.png)

Produced by this code:
```python
class GraphDemoReport(GenericTabularReport, CustomProjectReport, ProjectReportParametersMixin):
    name = 'Graph demo'
    slug = 'graph_demo'
    charts_per_row = 2

    @property
    def headers(self):
        return DataTablesHeader(DataTablesColumn("a"),
                                DataTablesColumn("b"),
                                DataTablesColumn("c"))

    @property
    def rows(self):
        return [[1, 2, 3]]

    @property
    def charts(self):
        x = Axis('x-label')
        y = Axis('y-label')
        c1 = MultiBarChart('Chart A: Multibar', x_axis=x, y_axis=y)
        c1.stacked = True
        c1.add_dataset('scheme a', [{'x': x, 'y': x} for x in range(0, 100)])
        c1.add_dataset('scheme b', [{'x': 100-x, 'y': x} for x in range(0, 100)])

        c2 = PieChart('Chart B: Pie', [{'key': "Cumulative Return", 'values': [
            {"label": "One", "value": 29},
            {"label": "Two", "value": 50},
            {"label": "Three", "value": 32}
        ]}])

        return [c1, c2]
```