Removing logic that assumes occasionally stretched tiles

When the dom renderer included logic to stretch tiles so that gaps were properly filled for fractional zoom levels, we needed to take this into account when getting a tile coordinate for a given coordinate and resolution.  This was never the proper logic for a renderer that wasn't stretching occassional tiles (e.g. the WebGL renderer, the Canvas renderer, or the new DOM renderer).
Making it explicit that this is a range of tiles

With tile range extending rectangle, a tile range that represented a single tile was not allowed.
Avoid left shift in resolution calculations
Allow Proj4js to be non-global and cache test result
Merge pull request #202 from twpayne/proj4js-non-global

Proj4js should not have to be global
Merge pull request #208 from tschaub/shift-with-care

Calculating resolution by left shifting tile sizes, we're unnecessarily restricted in the number of zoom levels we can have.
Image layer renderers add attributions to frame state
Attribution control reads attribs from frame state
Correct range for extent and resolution

Tile ranges are inclusive.  When getting the tile range for an extent, the top-right corner of the extent should be considered with a different intersection policy than the bottom-left corner.
Sharing code with rectangle

We cannot use the rectangle constructor here because a rectangle makes an assertion about min being less than max and a range may have equal min/max.
Rename ol.*.isSupported function to ol.*.SUPPORTED const
Add WMTS GetCapabilities parser

Implements WMTS GetCapabilities parser, which depends partly on
an OWSCommon parser.

Integration with the layer source will be done at a later stage.
Merge pull request #207 from tschaub/tilerange

Make tile range calculation consistent.  Tile ranges are always inclusive in their min/max values.
Merge pull request #213 from bartvde/wmtsclean

Implement WMTS GetCapabilities parser.
Merge pull request #210 from elemoine/imageattribution

Image layer support to attribution control
Rename ol.Geolocation.isSupported to ol.Geolocation.SUPPORTED.

And add the 'const' JSDoc Tags.
Remove tile grid extent_ property

This is never used in ol3.
Merge pull request #214 from fredj/supported-const

Rename *.isSupported functions to *.SUPPORTED constants
Merge pull request #216 from bbinet/remove_tilegrid_extent

Remove tilegrid extent_ property
Indentation for linter