Use React.js to render the frontend

This pull request rewrites the front-end to use React.js.  The various views are now rendered in the browser using JSON sent from the backend, which should significantly improve performance and will make it easier to implement several features that I'm planning.