New framework for reading/writing raster selections

At present, all PD selections are vector-based.  This is easy when the
selections are rectangles, ellipses, and lines.  However, forthcoming
features like grow/shrink/feather/border selection will result in
raster-based selections that cannot be so easily saved to/from file (as
is done for both Undo/Redo data and the user-facing load/save selection
menu options).

This new framework allows raster format selections to be saved to and
read from file.  The selection class will automatically determine when
this is necessary.  When loading raster-format data, it will
automatically be resampled to match the containing image's width and
height.