Make zoom into a loadable plugin

This adds preliminary infrastructure for loading plugins.