ttools: Pull RangeScaler out of ShapeMode.

Same functionality can be used elsewhere.
ttools: Modify the way that DataGeom works with PlotLayers.

DataGeom is now OK to use if it only has some coordinates, i.e. it
might specify a point, or a line, or a plane or whatever.
It has a new hasPosition() method to report which of these it's doing.
This means that non-point-plotting layers (such as spectrogram) can use
the DataGeom machinery to report ranges.  Users of DataGeom have to
be a bit more careful now.

Rename Plotter.getDataGeoms to getPointDataGeoms, to emphasise
that these ones must be full-point (hasPosition=true) instances.

Also add PlotLayer.extendCoordinateRanges which gives you the chance to
report non-point-like range extensions (like a spectrogram channel array).
ttools: add FloatingArrayCoord type for plot2 variable-length arrays.

Used for spectrograms.
ttools: add spectrogram plotter
ttools: refactor TextFieldSpecifier.

Move it to a new class to be used by Double and String config keys,
also available for use by other keys (like Time).
ttools: put in place plot2 options for 1-d (vertical) errors.

These are not used yet, but will be for time series plots.
ttools: update JEL from v0.9.10 to v0.9.11.

This version adds the method getTypeC() to CompiledExpression, which is
useful for checking compile-time types of supplied expressions.
Reports on the JEL website suggest that 0.9.11 is pretty stable.
ttools: test type of plot2 JEL expressions.
ttools: provide some infrastructure for time-series plots.

This is a merge of branch 'plot2-time'.
It includes adding FlaotingArrayCoord, basic spectrogram plot,
config key changes, etc.
topcat: add TopcatWindowAction (refactored from ControlWindow code).