Add plugin architecture

There are some things we want to look at for iFixit that aren't really
very generic.  Now you can write a plugin that gets the full environment
at multiple times during the run, so we can write all sorts of weird
things without polluting the project.