Evaluate all plugin files before instatiating plugin objects

The previous logic instantiated plugins as the files were read. This
caused multiple instances of plugins to be created when a plugin is
"reopened" in another file.

Additionally, loading-specific logic is moved from System to Loader.

@mcquin Can you double-check that I didn't butcher your recent changes?