Abstract multiple viewport bits into a new viewport class

(Relates to #89, #106, #107)

The addition of a status-bar-like object to each image window has
prompted me to make a number of much-needed changes to the way PD
handles viewport rendering.

The long-term goal for PD's viewport rendering is to move all viewport
code into a standalone class.  Individual viewport classes could then be
handed any arbitrary image and rendering surface, and it'll take care of
the rest.

To that end, I've now created a viewport class for each pdImage object,
and moved a number of viewport-related tracking code there.  This not
only cleans up and simplifies the pdImage object, but it also allows me
to add proper tracking code for per-image horizontal/vertical offsets,
which will be important when options are implemented for show/hide the
status bar, and possibly viewport rulers.