ttools: provide surface profile info for range calculations

In some cases it is necessary to know some facts about the way the
plotting surface will be set up in order to be able to work out the
range of the data.  The particular case in mind here is for a histogram,
when you need to know whether the X axis is logarithmic to work out
the bin extents, which in turn determines how high the bins are and
hence the auto-range Y extent of the surface.

This was not previously made available to the range calculation hook
(SurfaceFactory.readRanges).  The surface Profile object is now passed
to that routine.  Using the profile is still not straightforward,
since the PlotLayer, whose extendCoordinateRanges method does the
actual ranging, is unaware of the parameterised profile type (<P>).
Some surface-specific measures are therefore introduced (currently,
just passing log flags where applicable) to make this do the job we
need it for.
ttools: auto-ranging now takes account of partial positions

Some plot layers have positions that represent lines rather than points
in the data space (e.g. spectrogram and histogram).  The auto ranging
code in PlotUtil.readCoordinateRanges now takes account of these rather
than ignoring them.

Determining which plot layers supply partial coordinates is currently
a bit ad hoc, and handled by a utility method in PlotUtil.
ttools: add 1-d histogram plotter

This is working, though currently a bit primitive in terms of style options.
More to be added, various hooks are already in place.
The histogram is implemented as a plotter on a plane plot,
rather than a new plot type.
topcat: initialise keyboard focus in stack for query windows