Factor out common code and test

The findInterimTiles method was used in three renderers.  This change makes it available on the tile source and adds some basic tests.
Fix return from findLoadedTiles

Previously, the findInterimTiles method was returning undefined if the min x/y coord for a tile range was already in the lookup.  The return says it indicates whether all tiles for the given z are loaded.  This change corrects the return.

This change also reveals a misunderstanding of the tile range returned by `getTileRangeForExtentAndZ`.  The previous findInterimTiles method was treating max values as inclusive.  This is intuitive.  It looks like the method returns a range where max values are exclusive.
Passing tests
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.
Merge branch 'master' of github.com:openlayers/ol3 into interim-tiles