Switch to requestAnimationFrame and cache as many selectors as possible

So there's a lot of things that could be done for performance of the Lens Reader. Using only these dirty hacks, the performance of the demo page: http://lens.elifesciences.org/00778/#toc/all went up by 100% (12 FPS -> 24+ FPS) on my late 2011 MacBook Pro with 16 GB of RAM, 2,2 GHz i7 and the AMD Radeon 6750M. 

![elifelens](https://f.cloud.github.com/assets/238667/1838896/7b057f96-746a-11e3-9ff8-519a4bbee295.png)
Above half is before the changes: 12 FPS, bottom half is after the changes 24+ FPS.

I suggest we keep this PR open to find and fix more little performance issues and then merge that in. I'm positive this page should go up to 60 FPS without any major code changes - there's simply too much going on in the markActiveHeading and updateVisibleArea functions, forcing synchronous whole document layout and style recalculation (even multiple) for every scroll event.

P.S.: Yes I know how dirty document.headings is :)