Clean up finished markers

Markers whose animation has completed are now removed from the main marker hash.
When subsequent markers are added to the map overtime, old markers will no longer
hog up memory and cycles when looping.
Handling of animation uses setTimeout()

Previously the code used requestAnimationFrame() to handle the drawing loop, but that
function runs as fast as it can.  Fading out doesn't require very high frame-rates, so
it is better to handle the delay between updates with a specified, relatively low
frame rate.