Use base class pattern for associated image handling
jpeg: Abstract out some JPEG reading routines
mirax: Copy and paste relevant part of JPEG ops

Drop dependency on _openslide_add_jpeg_ops() by copying its implementation
from ops-jpeg.  Omit:

- Restart marker handling
- Generation of scale_denom levels (fixes #56)
mirax: Drop unused struct members
mirax: Drop redundant level shuffling and sorting
mirax: Ignore unused _openslide_jpeg_file w/h
mirax: Merge add_mirax_ops/init_one_jpeg into _openslide_try_mirax
mirax: Drop _openslide_jpeg_file
mirax: Drop redundant width/height from struct tile
mirax: Drop _openslide_jpeg_level
mirax: Drop _openslide_jpeg_tile
mirax: Drop redundant tile size in one_jpeg
grid: Pass tile column/row to _openslide_tilemap_fn
grid: Convert paint_region() w/h to doubles

We emit fractional w/h to the _openslide_tilemap_fn callback, so we must
also be able to accept it as input.
grid: Add API call to get grid bounds
grid: Drop unused tilemap_grid members
grid: Add debug function to draw tile boundaries
mirax: Refcount one_jpeg rather than passing lists around
mirax: Move jpegno into one_jpeg
mirax: Drop unnecessary insert_subtile() argument