cairo: Fix crashes and bugs in 'setup' call.
Changing the page_setup was not properly supported for PNG and SVG output,
because it assert-failed in xr_set_surface_size(). In addition, for all
kinds of output, it didn't account for margins properly in the page size.
This fixes the problem and unifies page setup between initial driver
creation and update.
This wasn't noticed before because output_set_page_setup() wasn't used
much, but it could be triggered with the pspp-output utility, converting
from an SPV file that contained a page_setup. It will become more
important because an upcoming commit will cause the SPV driver to output
a page_setup every time.