Pluggable autodomain

For #455, we need some way to let users override what domain you get for a scale - our current strategy of padding + nice is a good default, but not what everyone wants. This branch lets the user define the function used to calculate the domain, so they can include 0 (or not), exclude outliers, or do any other logic.