Use injection to create plugin factories
This branch refactors the plugin factories to use dependency injection, so that when a plugin's dependencies change we don't have to pass them through quite so many layers of constructors.
Plugins that received a Context (meant to be the application context) now receive an Application instead. Application implements Context so this shouldn't make a difference.
The only functional change is that the Tor directory is now created at injection time, rather than at plugin creation time. But since the plugin creates the directory if necessary when the plugin's started, this shouldn't make a difference. (I've tested this with a fresh account and an existing account.)
Fifth part of #1142 (closed)