Projection from view

Depending on how a WMS is configured, it can serve multiple resolutions. If a WMS supports arbitrary projections, it makes sense to use the view's projection. This pull request moves the tile/image url function generation from the constructor to the rendering sequence, where the view's projection is already known. For the API this means that users no longer need to provide a projection configuration on WMS layers that support the view's projection.

With the introduction of a `negotiateSourceProjection()` method on the layer renderer, future layer types can leverage this convenience as well, and we will be able to find a projection on a source that does not require client side reprojection to match the renderer projection.

Because the projection also affects the WMS request (`SRS` or `CRS` param), this pull request also introduces an `updateUrlFunction(opt_params)` method on WMS sources. This method can later be modified to trigger an event, so it can be used to update WMS params like `STYLES` and re-render the layer.