Force product to be called in scalar context

9ddede40c085634af8c39af3c997cb21e698f37a introduced a list context
which was breaking the hash assignment.
lib: Add subsystem_id method

This method moves the code from file_from_bits_extra to
a standalone method explicitly noting that we are treating
wavelength and ACSIS subsystem in the same manner.

file_from_bits_extra now calls this method directly.
lib: Add product_id method to JSAFile

CADC have the concept of a product identifier which is a
combination of the product type (reduced, rimg, rsp) and
the subsystem identifier (450, 850, 1, 2). product_id
collects information from both those sources and
returns a single product identifier.
general: Allow productID to be specified for PNG

Remove 'subsysnr' and replace with general concept of productID.
The product type is still written but now using the product header
as CADC have a specific definition of productID that includes
both product type and subsytem number.
jsa: Set productID for PNG images