Refactor/graph configs

The combination of `getConfigNames` and `applyConfig` was being used to basically break inheritance by arbitrarily overwriting functions at render-time.

Getting rid of this, and having default methods on the `Graph` view, with child classes overwriting as applicable makes inheritance a lot more predictable.

## Old way:

```
return Graph.extend({
  getConfigNames: function () {
    return ['stack']
  },
  ...
});
```

## New way:

```
return StackedGraph.extend({...})
```

This has been done in a lot of places, which now extend the existing stacked-graph class, encapsulating the functionality. 

The other use case was for period-based things in graph.js, which was easily defaulted out, because the only change needed was to read `_timestamp` for hourly data instead of `_start_at` for others.