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?
This is false if `!document.body` and `not amount instanceof Number`, and it drops through - which is incorrect.