Template improvements

* plugin has its own `plugin_detail.html` template to match `detail.html`
* cms_plugin adapted for this
* messages moved out of `detail.html` into base template
* notes in docs about the above
* in all templates, a better way of assigning CSS classes
* started on some tests
* .gitignore

I'm not sure what you mean in some of your earlier comments about how code should be formatted, but if you could correct anything I'll try to follow that example.