Fix TileJSON integers

Force `metatile`, `maskLevel`, `maxzoom` & `minzoom` parameters to be integers. Under normal circumstances they seem to be, and I wasn't able to directly reproduce the issue mentioned in #54, but it is possible for the `mapnik::Map` parameters to contain a `mapnik::value_string` instead of the expected integer. This PR adds code which converts any non-integer values to integers before exporting TileJSON.

Additionally, this fixes the `maskLevel` default, previously zero, to be the same as `maxzoom`. This means that, when `maskLevel` is unspecified, a client at a higher zoom than the maximum will fetch the most detailed tile rather than the least. It is a more sensible default, but no substitute for setting `maskLevel` properly.
Nice catch! Indeed - I used to, but dropped in favour of `std::rethrow_if_nested()`, which is apparently The Right Way to do it.