Frontend plugins

@cpatrick This branch is getting long. It's a good straw man at this point, I think, and there are now docs for frontend plugin dev, so I'm calling this ready for QA.