heterodyne: Correct logic of a zombie.
heterodyne: Don't collapse to obtain the spreads of the spreads.

The noise signal comes from comparing the spectra over time. Some of
the signal will be due to sources, but the end of spectrum noise will
dominate.  However, if the noise spectrum per receptor is collapsed
using sigma and there is a bad receptor present it can dominate the
signal.  This change selects the clipped mean for the collapse along
receptors to eject an anomalous receptor or two. There is also a note
on how this code could be developed to do this better should an image
be supplied, when it is needed.  The clipped median is also a possible
estimator for collapsing the receptor axis.  Experiments on hybrid
data with two bad receptora of only twelve, the clipped mean gave good
results.
heterodyne: Extract common code for obtaining and reporting recipe
parameters.

Start with three which cover the high- and low-frequency interference,
non-linear receptors, and flat fielding.

Allow additional releated parameters to be set without the overarching
flag parameter.  In three of the four cases the flag defaults to true
in the primitive that does the desired step. It seemed silly to force
the user to add the boolean selection parameter in such cases if they
only wanted to refine an associated parameter.  Also add the heading
message should an associated parameter be set without the selection
parameter.

Allow for an existing true setting to uhdr INDEX_BAD_RECEPTORS now the
code is fragmented into primitives.
heterodyne: Apply the three new recipe parameter-setting primitives.

This is just the start of the factorisation.

Retain $commasep for now because it could be needed for other
parameters.  It was previously only used for parameters now accessed
in the new _SET_*_RECPARS_ primitives.