Do not use hard coded values, code clean-up.

Declare MAX_SPOTS and use it where it applies.
Changed lighttable filemanager view so that zooming does not use the upper left image as anchor, but uses the image under the mouse cursor instead.
Main fix is zooming now allows space to be created in fron of the first image, so that the image under the mouse can remain there. In order to achieve this, I found it necessary to move some code around so that the filemanager view is slightly more MVC like, i.e. the expose method does not handle user input any more. The same procedure should be done for the zoomable view, but that is for another commit...
Zooming is ultra smooth now because images are allowed to go outside the borders during the zoom. After zooming the image snap back into the grid.
fixed a problem that a previous zoom operation would mess up a following zoom operation if the view had snapped back to the grid in between. Still has an issue when there is only one image displayed...
Implemented zoom fix for Bug #9168. Smooth zooming code has been removed, so that images always stay perfectly aligned in the grid, due to simpler implementation and broader support in dev community.
fixed zoomable lighttable zoom bug
Fixed issue with empty space before images in lighttable on first load. Also fixed shortcuts g,shift+g,pgup,pgdown. No performance issues have been addressed.