Use React components for lines and line numbers

This PR switches back to React components for lines and line numbers. There is a ~14% performance penalty at larger scroll sizes, but the code is a lot easier to reason about. I would love input from @petehunt or another member of the React team regarding improving the performance.

As you can see below, the overhead appears to be significant over the current manual DOM manipulation approach. The first part of the timeline is an accelerating scroll in two different versions of the editor, the first full react from this PR, the second with manual DOM manipulation from master. Note the larger amount of yellow JS time in the first timeline.