Refactor tile functions

* Add support for minZoom in XYZ tile grids and tile sources
* Factor out common tile coordinate transforms
Clip tiles to extent in tile coordinate space
Promote createTileCoordTransform into base class
Prevent user's setting of max-width from infecting map

Thanks @ThomasG77.
Giving the map a getFeatureInfoForPixel method

This method is an entry point for getting feature information.
Renderers can use a hit canvas or defer to a layer (source) to
get matching features for a pixel.

For now this is only implemented for vector layers, and it uses
a bbox query because we cannot refine the result because of
missing geometry intersection functions yet.
Get hit candidates from RTree, then refine result

Now we get exact hits also for lines and polygons.
Info box instead of tooltip as suggested by @fredj
Do not check for listeners, as suggested by @fredj
ol.Object.{on|onOnce|un} type can also be an array of string
Merge pull request #674 from ahocevar/getfeatureinfo

Getting feature information for vector layers. r=@twpayne,@fredj
Merge pull request #675 from fredj/object-listen

ol.Object.{on|onOnce|un} type can also be an array of string
Merge pull request #671 from twpayne/refactor-tile-functions

Refactor tile functions
Merge pull request #665 from twpayne/fix-firefox-dom-renderer

Prevent Bootstrap's setting of max-width from infecting map