Requestanimationframe

this is ready for review.  I havent done performance testing but there isnt noticable performance changes which is probably a good sign.  the usage is well encapsulated and reverts to settimeout when requestAnimationFrame isnt available