Factor out axis strategies

Uses separate strategies for different axis types.
Pulls out the domain, findMin, findMax, and findOrdinal methods into the
new strategy.
Introduce basic tickFrequency calculation

Adds the tickFrequency method to the Axis, and hooks it in to tickValues
for linear scales.

For now, date and category scales use the same tick values they
previously used.
Introduce tickValues to axis

also allows axis tickFrequency to be set by the user
Increase/Decrease ticks by step

Implements the increase/decreaseTickStep method, to generate the next or
previous tick from the current one, with different implementations for
ordinal, linear and date axes.
Implement Auto-frequency for dates

Adds the initial, increase and decrease methods for tick frequency.
We have a preset list of frequencies for dates, from 1s to 100yr.
Introduce initialTickValue to axis

For this to work for a date axis, a date round function has been
introduced.
Update axis draw to use auto-tick values
Update axis calculation for interactive axes
Update auto-tick calculation to prevent ticks from overlapping

The tickValues function no longer depends upon the axis for its
tickFrequency value.  Add test to handle rounding small numbers.
Organise tests for axis
Merge remote-tracking branch 'scottlogic/develop' into feature/tick-frequency
Update changelog
Address issues raised in PR

- AxisStrategy comments
- increaseTickStep to nextTickValue
Fix UTC date issue with tests
Fix issue with rounding years

The Date constructor will treat a single numeric arguments as
milliseconds from Unix Epoch, not years.
Additional code cleanup associated with PR
Update comments and issues from PR
Merge pull request #196 from matthewdunsdon/feature/tick-frequency

Improve tick-frequency calculation to handle small charts