Support float zoom value

This is kind of a big PR as it required a lot of changes.
I needed the support to zoom the map to the lowest value without repeating the map (using setScrollableAreaLimit).
To do that i could not use an integer zoom value. So i had to allow the whole sdk to use float values.

It works mostly great, a few notes:
- if the farthest zoom is float then the tile look scaled. I am not sure i use the correct value when calling "rescaleCache" (which need to be int)
- i updated the animator consequently on > HC as i can update the values dynamically. Can't on preHC. So this raises a question: why not use nineoldandroid? (i can create a very easy PR).

I hope this one is going to make it in