Allow a zoom factor to be applied to a `Grid`

Previously zoom levels in grids were separated by a zoom factor of
two.  This is still the default but may be altered to provide an
arbitrary value (e.g. 1.5, 4, etc).
Added a `GridIterator` for iterating over grid tile coordinates
Added `TileCoordinateIterator` and `CRSBoundsIterator` classes

These provide more useful data types when iterating over grids.
Throw an error if a GDAL tile cannot be created
`TileIterator` and subclasses are specialisations of `GridIterator`

The core iteration functionality is now implemented in `GridIterator`.
Zoom levels to be processed can now be limited on the command line

`terrain-build` and `terrain-extents` now share the `--start-zoom` and
`--end-zoom` options which allow a zoom level range to be specified
for processing: levels outside this range are excluded.
Renamed `TileIterator` to `TilerIterator`

This better represents its function.
Updated the public header and list of headers to be installed
Updated the README