use grunt to generate a single JS and CSS file

This adds generated files to source control, but I think the benefits
outweigh the downsides.