React tables

This is a redo of #1502. I have done some architectural restructuring so that the base Table React component is more generalizable, and I've changed the way components get mounted onto the view (originally was using the react-rails gem, but now going a more native route). Also deleted unnecessary .rjs files (for the original tables) and partials, as well as the students' populate route in route.rb (we now populate by sending an AJAX request to the same url, just requesting it in JSON).
It's okay to `return render ...` in controller actions because we don't care about the return value of action methods. In this case, callers of `add_member` expect `add_member` to return some error and is checking it by `if possible_error = add_member(...)`, which means that callers expect a truthy return value of `add_member` to be an error, but the method is actually relying on the unreliable return value of `render`.

That being said, I prefer to not handle the error here. Handling it here means that the errors need to be manually propagated to callers and callers need to check the return values. It's easier to just not rescue any exception here and let the exception propagate, and handle the exception (by rendering the error message) in top-level action methods.