better_zoom: factorize and fix zoom_to_mouse algorithm
better_zoom: factorize and fix zoom_to_mouse algorithm

with old algorithm, a zoom-in followed by a zoom-out will
not result in coming back to the same place, which is very
confusing for the user.
The point under the mouse was sent to the center of screen.

With the new algo:
- we make sure that the point under the mouse keeps its mapping on screen.
- we dont use mapper.map_data anymore to find out center of screen because this implies
pixel based rounding errors
- We also factorize the lot of cut and paste in this file.

Signed-off-by: Pierre Tardy <bb5a2a16eebb4a48138fca46fede24b3c8d635fe@intel.com>

ContinuumIO/chaco,ContinuumIO/chaco,tommy-u/chaco,ContinuumIO/chaco,burnpanck/chaco,burnpanck/chaco,ContinuumIO/chaco,tommy-u/chaco,burnpanck/chaco,tommy-u/chaco