Use requestAnimFrame instead of setInterval

* It's an optimization for animations, see why here: paulirish.com/2011/requestanimationframe-for-smart-animating/