Add External plugin

Includes the changes from my req-plugindir branch plus the External plugin that makes use of them. It pipes code blocks through external programs, which can be things already on your system or scripts you put in the plugin-dir. I'm not sure if the `Network.Gitit.Plugin.External` interface is set up quite right, but it seems to work. This request adds a dependency on the `canonical-filepath` package, plus the Python, Perl, and R interpreters if you want to run the examples.