This commit introduces the initial version of a plugin framework with tests and sample plugins. This helps address #315 and closes #316.