Allow adding custom scale methods

* Normalizes the scale method arguments
* Exposes get/set scales via `xChart.setScale(name, fn)` and `xChart.getScale(name)`, similar to get/set custom vis types.