Fix SEGVs seen on unix caused by the fz_output commit.

It seems that gcc requires arg lists to be 'va_copy'ied, otherwise
they can't be reused. This solves problems in the rework of
fz_buffer_printf.
Fix forgetting to open fz_output for xml output.
Change to pass structures by reference rather than value.

This is faster on ARM in particular. The primary changes involve
fz_matrix, fz_rect and fz_bbox.

Rather than passing 'fz_rect r' into a function, we now consistently
pass 'const fz_rect *r'. Where a rect is passed in and modified, we
miss the 'const' off. Where possible, we return the pointer to the
modified structure to allow 'chaining' of expressions.

The basic upshot of this work is that we do far fewer copies of
rectangle/matrix structures, and all the copies we do are explicit.

This has opened the way to other optimisations, also performed in
this commit.

Rather than using expressions like:

   fz_concat(fz_scale(sx, sy), fz_translate(tx, ty))

we now have fz_pre_{scale,translate,rotate} functions. These
can be implemented much more efficiently than doing the fully
fledged matrix multiplication that fz_concat requires.

We add fz_rect_{min,max} functions to return pointers to the
min/max points of a rect. These can be used to in transformations
to directly manipulate values.

With a little casting in the path transformation code we can avoid
more needless copying.

We rename fz_widget_bbox to the more consistent fz_bound_widget.
Add some 'restrict' qualifiers to hopefully speed matrix ops.

Also, move fz_is_infinite_rect and fz_is_empty_rect to be a static
inline rather than a macro. (Static inlines are preferred over
macros by at least one customers).

We appear to be calling them with bboxes too, so add fz_is_infinite_bbox
and fz_is_empty_bbox to solve this.
Solve potential problems with partial update.

When we run a display list we pass in an area for fast eliding of
objects. Ensure that the area we pass in is always at least as big
as the bbox with which we create display devices.
Rename bbox to irect.
Fix Android build after reference/irect changes.
Android: factor out search from main activity
Android: factor out ReaderView's special handling of MuPDFView objects
Fix problem with text selection caused by 0399332d54
Update iOS app for rect/matrix pass by reference.
Apple broke external scripts yet again.

Disable the automatic "make generate" step from the build, since it
doesn't work anymore. There appears to be some hidden environment
setting used by the compiler which breaks external make compiling
for host while Xcode is set to cross compile.

This is a pointless waste of time to track down and fix, so now you
will have to run the "make generate" step manually.
Bump version number strings and dates for 1.2 release.
Update doc/example.c for passing rect/matrix by reference.
Update doc/multi-threaded.c for passing rect/matrix by reference.
Add CHANGES file.
Redraw reflow icons in Xara to get better antialiasing.
Android: highlight reflow icon when in reflow mode