Added "logical" plugin system

This commit adds a way for each plugin to read input and add or edit
regular tags. It also delegates the template and path loading to the
plugin system (with an abstract class that can be extended off of) so
that it can be modified there.

Classes were added to the existing plugins to make them work with this
system.