Support for layers with limited extent

The `extent` layer option can be used to limit the extent of layer rendering.  This will replace the `extent` option for sources.

Two motivations for this change:
 * though all sources currently accept an extent option, this is inconsistently applied (most sources ignore the extent option and vector sources override `getExtent` to return a different extent than the one provided)
 * the layer `extent` option fits well with layer `minResolution` and `maxResolution` (they all limit the range at which source data is rendered)

Fixes #2091.