Allow arbitrary zoom levels

This allows arbitrary, non-integer zoom levels, as requested and discussed in acardona/CATMAID#686. Please see the individual commit comments for implementation details and caveats.

Tested on Chrome 37.0.2062.94 and Firefox 32. Firefox continues to have tile layer flickering issues, but they are more noticeable when changing zoom by small amounts. Jerk in the SVG overlay is also more noticeable when changing zoom by small amounts, but this is mitigated in c16c435.