Smooth scrolling via requestAnimationFrame

This is a follow-on to #1229 which uses `requestAnimationFrame` instead of `setInterval`.

This gives me a slight performance improvement on my machine, and the scrolling speed now feels closer to Chrome's native implementation. @smblott-github, do you have any thoughts on this?
Oops! I'll get rid of that.