Alter how plugin arguments work.

Plugin arguments are now positional occurring 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:

```java
new WireJavaPlugin()
  .setOutputDirectory(new File("src/main/java"))
  .setRegistryClass(com.example.ExtensionRegistry)
  .run(data);
```