More context for url functions

With this change, url functions are called in the scope of the
source they are configured for. This allows us to simplify the
url function generation for WMS, using a more generic
createFromParamsFunction factory, and the source's new params
member.

Note that there is also a new url member for WMS sources. This
is the WMS base url (the first one in case there is an array of
urls for faster tile access). This can be used for accessing
other WMS services (especially GetFeatureInfo).
Fixing requires
Less context

This change removes all changes that were anticipated here for
WMS GetFeatureInfo handling, including the IWMS interface and
the goog.provide for 'ol.tilegrid'. I'll create a separate pull
request for WMS GetFeatureInfo eventually, taking into account
the suggestions from the discussion in #402.
Merge pull request #402 from ahocevar/more-context

More convenient url functions for WMS. r=@elemoine,@twpayne
Add wmts-capabilities example
Use correct namespaceURI for WGS84BoundingBox reader

(closes #356)
Add new equivalent projections

for both EPSG:4326 and EPSG:3857.
Fix wmts-capabilities example

the parsing of the wmts getCapabilities document require proj4js.

Also initialize common ol3 projections with ol.projection.addCommonProjections
so that it won't try to get EPSG:3857 from proj4js.
The same projection can be added more than once

So that addCommonProjections can be safely called in our examples.
Add exportSymbol for ol.projection.addCommonProjections
Update social links in wmts-capabilities example
Add png output
Support nested options objects

This commit extends the generated Export constructors to support nested options objects. For example, this is now supported:

@exportObjectLiteralProperty ol.MapOptions.view ol.View|ol.View2DOptions|undefined

This specifies that the "view" property in the map options can reference an ol.View instance, an ol.View2DOptions literal object, or undefined. If the "view" property references an ol.View2DOptions literal object the ol.MapExport constructor will create an ol.View2DExport instance, and pass it to the parent constructor, ol.Map. In this way, extern types never cross the external/internal boundary. In other words, translations from non-renamed to renamed objects remain confined to the generated Export constructors.
Fix goog.provide for object literals
Merge pull request #398 from elemoine/nestedoptions

Support nested options objects
Use jsdoc v3.1.1
Using a server that is not down (closes #406)
Merge pull request #408 from elemoine/jsdoc311

Use jsdoc v3.1.1
Minor jsdoc fix
Merge pull request #403 from fredj/export-map

Add png output