Abstract data dereferencing

In order to better facilitate reusability, provide an interface for
working with chart data. With it, chart consumers are able to define the
"shape" of their data. Allow consumers to explicitly opt out of this
behavior for situations that require runtime optimization (i.e. large
datasets, frequently-updating charts, or low-powered devices).
Remove unecessary branch

All charts define a `dataAttrs` array.