First commit to plugin-based architecture

The goal here is to have mkvm provide a core set of functionality, while
allowing end users to add their own functionality through plugins.

Additionally, we're compartmentalizing the various core features into
separate classes.
Add more plugin info

Mention plugins in the README.
Add an example plugin to the plugin directory.

Convert sample YAML file to use symbols rather than strings.