Added debounced scroll handling

Doing lots of work (especially DOM work/repaints) on every `'scroll'` event can kill scroll performance, so debouncing the scroll handling alleviates this.

Where available, this patch uses [`requestAnimationFrame()`](https://developer.mozilla.org/en/docs/Web/API/window.requestAnimationFrame) to align paints with the browser’s frame scheduling; otherwise it just throttles to ~67 updates per second.

Based on the techniques described [here](http://www.html5rocks.com/en/tutorials/speed/animations/).