Tick generator using interval.

Close #1166.
i feel like the following logic is simpler
```
var low = Math.min(domain[0], domain[1]);
var high = Math.max(domain[0], domain[1]);
var domainRange = high - low;
var numTicks = domainRange / interval;
var ticks: number[] = [];
if (low % interval !== 0) {ticks.push(low);}
_.range(numTicks).forEach((t) => ticks.push(t*interval));
if (high % interval !== 0) {ticks.push(high);}
return ticks
```