use 16-bit components for intermediate transfers (inc. calibration)

The S1300i returns 16-bit components during calibration, even though the main scan still only returns 8-bit components.

We fork the "image" struct into "transfer_image" and "page_image", for use by the "transfer" and "page" structs respectively. "page_image" is as before, but "transfer_image" has a buffer of shorts instead of chars. This buffer contains true 16-bit components where they are available (e.g. during calibration with the S1300i), otherwise 8-bit components are scaled to 16-bit by shifting up by 8.

descramble_raw:
Reads 16-bit values directly; shifts 8-bit values up 8 places, as if they were low-resolution 16-bit values.

coarsecal/finecal:
Takes 16-bit values and divide through by 256.0f. Rest of algorithm proceeds as before, but with fractional float values (0.0f <= value < 256.0f) instead of char values (0-255). Low pegs are "== 0.0f"; high pegs are ">= 255.0f".

finecal_send_cal:
Assumes that sendcal.buffer (a short[]) is packed with the same byte order as cal_data.raw_data (a char[]). The easiest way to achieve this is to reinterpret sendcal.buffer as a char[] when packing it in finecal.

copy_block_to_page:
Takes 16-bit values and truncates by shifting down 8 places. Because this is only called from the main scan, the lower 8 bits will always be zero.