Scale doesn't know about data, renderer does

Before, scales knew what their data was and would compute an extent from that whenever it updated, with updates flowing like `renderer <- scale <- data`. However, sometimes the extent is better known by the renderer, for example, a bar chart knows that it must include enough space for the last bar.

This branch rearranges things so that scales don't know about their data, they only have  a renderer to extent mapping. The new flow of control in `scale <-> renderer <- data`, where a data update causes the renderer to compute a new extent, send that new extent to the scale, which potentially changes its domain an signals back.
it shouldn't unconditionally set the domain, rather it should check the `_autoDomain` flag (if you merge in master i renamed it to `_autoDomainAutomatically`). also since this is going to duplicate scale expansion logic with `autodomain`, just move the scale expansion logic into `autodomain` and have `extentChanged` call `autodomain` if appropriate