Abstract all zoom code into a new destination-agnostic zoom class

Zoom controls will eventually be moved to individual image windows, so
they must be abstracted out from any particular combo box.

Additionally, this is a key component of preparing to add zoom
functionality to tool preview windows.