This change allows the test framework to reliably specify
which plugins to load and use within the same process.
Previously, plugins were loaded by importing files and then
accessing the Plugin class' list of subclasses.
Now, it's possible to run dotbot multiple times without
plugins accruing across runs with different configurations
and CLI arguments.
In addition, this fixes some circular imports that were
previously avoided because plugins were imported in a function.