general: Check if ASN_ID is defined.

Although this primitive is in the general directory I wonder if it
should be in a JCMT or JSA directory, given that it's looking for
an ASN_ID.  For UKIRT there is no such header.  For the moment
just protect against an undefined ASN_ID keyword.
uist: Protect against undefined waveform.
imaging: First go at adding preview image and PRODUCT for UKIRT Cass Archive.
heterodyne: Create a temporary Frame to call a primitive.

Masking multiple velocity ranges was failing due to processing the
wrong NDF at the end.  Although in a new context, I thought in a block
where "my $Frm" was defined, it was updating the same $Frm to pass
into _MASK_SINGLE_AXIS_REGIONS_.  I had made changes in this area
connected to tidying all the intermediates, and had had the new frame
instantiation as now coded, but it didn't remove the intermediate.
This now works again for multiple regions.  Note I've not tested
this for all auto mode although it used to work.

This change may leave some intermediate files around, but that's much
better than crashing the recipe.
etc: Do not report how to get help from the non-existent SUN/XXX.
Merge branch 'master' of github.com:Starlink/ORAC-DR