Switch to specifying rendered output in pixels, not as a scale

Passing a scale to the backend meant that we were implicitly counting
on the backend code and front-end code to do exactly the same calculation
to get the rendered size of a page. Instead switch to passing a
target size in pixels to the backend.

This, among other things, allows us to make sure that we render at a size
that is integer device pixels in both X and Y directions.

ev-render-context.[ch]: Add ev_render_context_set_target_size() and
three helper functions:

 ev_render_context_compute_scaled_size(): get the pixel size to render at
 ev_render_context_compute_transformed_size(): size including effect of rotation
 ev_render_context_compute_scales(): get the corresponding xscale/yscale.

ev-jobs.[ch]: Add ev_job_thumbnail_new_with_target_size(), and pass the
target size for thumbnail and render jobs (which already had a target
size) to the backends.

backend/*: Use the helper functions rather than directly accessing
 render_context->scale.

ev-pixbuf-cache.c ev-view.c ev-view-presentation.c ev-sidebar-thumbnails.c
ev-window.c: Switch to passing target sizes rather than scales when
rendering.

https://bugzilla.gnome.org/show_bug.cgi?id=723431