WebMapServiceImageryProvider improvements

This builds on #2057, so merge that first.

Allow user to specify tile width and height, minimum level, and tiling scheme when constructing `WebMapServiceImageryProvider`.  When the tiling scheme is `WebMercatorTilingScheme`, tiles are requested in EPSG:3857 instead of the usual EPSG:4326.  This lets us use WMS servers that only serve Web Mercator images (yes, I've seen such WMS servers in the wild).

Also changed the `rectangle` constructor parameter to affect only the provider's rectangle, not the tiling scheme's rectangle.  This means that providers with a limited extent will still have tiles that line up with
the terrain tiles (assuming GeographicProjection), which will result in better performance.  It's possible to get the old behavior just by constructing and passing a tiling scheme with limited extent to the constructor.