Function for getting extent intersection
Layer extent option

If provided, the layer extent will be used to limit data requests and rendering.  If undefined, to limit will be imposed.
Limit image layer requests to layer extent

This has two nice consequences that can be seen in the wms-image.js and mapbuide-untiled.js examples:
 * no images are requested when you browse outside of the layer extent
 * when the layer extent is within the viewport extent, cached images are used since the intersecting extent is the same for multiple viewport extents
Only request tiles within the layer extent

Layer renderers are now responsible for requesting data within a limited extent.
ol.tilegrid.TileGrid doesn't accept an extent option

Tile grids cannot currently be constructed with an extent (though we should perhaps provide a function that allows this - see https://github.com/tschaub/ol3/commit/68815dca10ef006294c767efe9592b682c48dc5f for an example).
Remove extent option for sources

Most of our uses of source extent were cargo cult programming.  The source extent was seldom and inconsistently used.  Instead, layers can now be configured with an extent, and layer renderers limit rendering (and data requests) to the layer extent.

For vector sources, the `getExtent` method returns the extent of currently loaded features (this was the case before and after this change).  For tile based sources, we will likely want to allow easy construction of tile grids based on an extent (this is not possible before or after this change, but could be added later).
Merge pull request #2316 from tschaub/layer-extent

Support for layers with limited extent.