Alter how plugin arguments work.

Plugin arguments are now positional occuring only immediately after their corresponding '--plugin' declaration.

On the plugin itself, argument parsing is now separated from invocation so that you can use a plugin like a builder:

    new WireJavaPlugin()
      .setOutputDirectory(new File("src/main/java"))
      .setRegistryClass(com.example.ExtensionRegistry)
      .run(data);
WIP