Issue30

This implements the plugin architecture in issue #30.  It required a whole new build process.  To dogfood the development process while using it, I also prototyped #33.  However, the docs need many changes that I haven't gotten to yet.  I'll leave this PR outstanding until those are in place.