More method descriptions.

I'm starting to "get" this axis label layout code.

Change-Id: I797a92698cb81a1b9325f81b5275cb033cb7c342
These methods can be private rather than protected.

Change-Id: I56f1296f5a2df67ae9386ae9f30761aee0fde7f3
Create a variant of createTextShapes for simpler use cases.

So that we can do more aggressive optimization without breaking the other
cases.

Change-Id: I5d4ceb2a3b7f041f752a570827815236e9de58db
Some code sharing.

Change-Id: If80c4b0ceec5e0afd55d12ebe7511fb4f40b4797
Let's use size_t for the index.

This removes unnecessary static_cast's and check for negative values
which, from what I've read from the code, never happens.

Change-Id: I9d9e1de5b091df335dd3b7eeb34e4e8f98de0fbd
Modify the tick iterator strategy to use fewer ticks.

To pre-determine the size of the largest text label object, auto-staggering
strategy etc.  In theory (if I read the code correctly) we could achieve
the same thing by using only 3 ticks rather than 5.

Change-Id: Iee51588061e482c724ee4fb666c51c2a6b636e8c