Y Scale domain adjustment algorithm

Add API endpoint to provide custom y scale domain adjustment algorithm based on new x scale domain.

Close #1079.
is it feasible to hook this logic into the scale's `autoDomain` behavior? so after we have set the adjustment policy, calling `scale.autoDomain` will always do the right thing. and then here we dont set the domain manually, we just configure the right data and then call `scale.autoDomain`