DelegatingMarker.remove should call map.onRemove *before* real.remove

=> DelegatingGoogleMap.onRemove(DelegatingMarker marker) calls
createdMarkers.remove(marker.getReal().getMarker()), but getMarker()
always returns null at this point if the marker is removed before
calling onRemove, since LazyMarker#remove nulls it.
Merge remote-tracking branch 'yochiro/fix'
updated google-play-services to r9 (3.1.59)
removed unnecessary permission
updated support library to version 18
animation settings
Marker.animatePosition stub
leaky marker animation implementation
removed CancelableCallback from marker animations, to be replaced with another callback
animating markers demo
updated android-maven-plugin version
adapter for easier cluster animations
fixed equals
fixed NPE
forwarding animation settings to GridClusteringStrategy
tests
caching marker position
preparing cluster animation
MarkerAnimator replaced with ClusterAnimator in GridClusteringStrategy
removed cluster marker caching
refactoring: managers for visual objects