Plugin System and Theme Switcher

This builds on of my previous refactor in #69 (which is why there are so many commits) and adds the ability to define and load additional plugins. I've added a theme switching plugin which closes #47.