Right now, our `spfx project upgrade` rules use distinct args in constructors, eg: ```ts export abstract class DependencyRule extends JsonRule { constructor(protected packageName: string, protected packageVersion: string, protected isDevDep: boolean = false, protected isOptional: boolean = false, protected add: boolean = true) { super(); } // ... } ``` While it's convenient to use them in the rule, instantiating these classes gets confusing: ```ts super('@microsoft/sp-office-ui-fabric-core', packageVersion, false, true); ``` What was the 3rd arg for again? I suggest we wrap all args in an object so that we can call it more clearly like: ```ts super({ packageName: '@microsoft/sp-office-ui-fabric-core' packageVersion, isDevDep: false, isOptional: true }); ```