It's a lot more predictable if we always use selectAll to determine the parent
node for a given group, rather than trying to infer parent nodes per node
during select.
The tick format function doesn't have to be used with ticks, though. It's also
for convenient for determining an appropriate precision for any value label.
Previously, the tweens would not be initialized until the first tick, after a
minimum delay. It's more predictable if we initialize them during the initial
apply, especially if the tweens depend on external state (such as scales) that
may change after the transition has started.
If the select doesn't find any results, `o.node` is null, so we shouldn't run
any normal actions on it. But we still want to run the data action on it (to
generate the enter selection), so the fix is a bit more complicated than this.
This includes only the quantitative scale functions, which is primarily the
linear scale. Also included are `log` and `pow` scales, which are simple
transforms of linear scales. All the scale functions use the existing
interpolator logic, so you can specify an output range of numbers, colors,
fonts, paths... pretty much anything.