Add `background` and `flatten` APIs

Original discussion #91. Created new pull request against `lovell:alpha` as GitHub doesn’t let one change the target branch.

## Documentation

#### background(color) or background(r, g, b)

Set background color for operations such as `flatten`. Pass any valid CSS color as `color` string, e.g. `'#00ff00'`, `'hsl(120,100%,50%)'`, etc., or as numbers in the range of `[0, 255]` for `r`, `g`, and `b`. Defaults color to black.

#### flatten()

Flatten transparent images onto background with a color set using `background`.
This is probably my fault - there is currently an inconsistent approach with a mix of both pointer reallocation (after an unref) and use of `vips_copy`. The medium-to-long term plan is move to the pure C++ API when it's ready. The short-to-medium term plan is to use [vips_object_local_array](https://github.com/jcupitt/libvips/blob/master/libvips/iofuncs/object.c#L2802) to "manage" references.