ordinalScale.extentModifier added

`Domainer` turns extents into domain on `Scale.Quantitive`. It would be helpful to have something similar on `Scale.Ordinal`.

While the most general form of this would be some sort of `OrdinalDomainer`, it would end up sharing almost no code with `Domainer` other than being logically similar. Therefore, it's implemented as a function of the type `(string[]) => string[]`.

Close #623.
instead of overriding `autoDomain()`, it might make more sense to override `_getExtent()`. Note that the parent implementation of `autoDomain()` includes the crucial step of switching on `autoDomainAutomatically`.