don't crash at zoom just < 200%

to address bug # 10025
be more punctilious about type casting
process only half width & height in closeup mode

No need to calculate the whole 100% roi if are viewing at 200%. This
allows the viewing area in closeup mode to go all the way to outer
edges of the image without trying to calculate beyond the image edge.
fix zoom jumping at edges

This reverses a change from
darktable-org/darktable@54f0f75c23f80b037715c4a47be58c9118698a1f. The
zoom jumping that commit fixed is now solved by the prior commit,
which only calculates the viewable rectangle in closeup mode.
keep w/in image edge when switch out of closeup

otherwise it would be possible in darkroom mode to:

- turn off flip iop
- set to 200% zoom
- pan to bottom edge
- switch back to 100% with Alt-1
- see a black border at the bottom of the image view
check zoom bounds in dt_dev_process_image_job()

Check zoom bounds here every time rather than in zoom_key_accel().
This now catches the case of toggling from 200% to 100% at image edge,
but also a case when switching between aspect ratios or changing image
orientation.

Note that now dt_dev_check_zoom_bounds() gets called more times than
necessary -- either unnecessarily in dt_dev_process_image_job() or
gets checked in other functions as well as in
dt_dev_process_image_job().
more selective about when to check zoom bounds

Only check in dt_dev_process_image_job() if changed to a different
image or changed pipeline. Restore separate check if toggle closeup.
Merge pull request #643 from dtorop/zoom-crash-garbage

eliminate crash & garbage on 2x > zoom > 1x
dt_exif_read(): check stat() return value

Coverity CID 1087782
RawSpeed: RawDecoder::decodeUncompressed(): cast before multiplying

Coverity CID 1230646
RawSpeed: NefDecoder::getMode(): fix typo

I believe this is the correct typo fix because of lines 66 and 81 of this file.
Coverity CID 1230642
Add a basic CIFF parser and CRW decoder skeleton
Eliminate partial matching warning for the 300D
Make the crw make/model detection work
Basic parsing support for the EOS 300D
usermanual: example section on red-eye removal thanks to Rudolf Martin
usermanual: improvements thanks to Michel Leblond (feature request #10004):x
Make the CRW decoding actually work
Add support for the mythical Canon D30
Add support for the Canon D60