Convert UI to ReactJS

The UI should look almost identical to how it did before, but with a couple fewer bugs and a few more features.

The main new feature is that webdiff now shows the full list of files, which can be collapsed to a dropdown if desired.
OK, I think that makes sense. Plumbing `imageDiffMode` through here, when you don't know if you will in fact even be in image mode, still seems a little weird.

One way to scale this cleanly, if you had many props for each of several mutually-exclusive modes, would be to have the props for each mode be grouped into per-mode props objects, so you would only pass `N` such objects down, not `N*M` (where `M` is the number of props per mode); better yet, those `N` objects should be grouped into one object that goes to `DiffView`, which would then look for things like `this.props.imageDiffProps` or `this.props.textDiffProps` and farm out to the appropriate sub-component.

Obvs not terrible at this point where `N = 2` and `M ~= 1`, but I guess my conclusion is that perfect React would have `filePair` here be repurposed as `diffViewProps` and `imageDiffMode` here would live in `imageDiffProps` therein (the existence of which could supplant your existing `is_image_diff` prop on `filePair`.