Added a new command dispatcher that injects different parameters dynamically.

This reduces the boilerplate code needed to parse arguments in each command, and reduces the need to maintain command documentation with @Command.

Example:

@Command(aliases = "/set", desc = "Set all the blocks inside the selection to a block")
@CommandPermissions("worldedit.region.set")
@Logging(REGION)
void setBlocks(LocalPlayer player, EditSession editSession, @Selection Region region, Pattern replaceWith) {
    // Perform command
}
Changed WorldEdit to use the new dispatcher.
Merge commit '142f5c8e5c889ee5098c05ba2fde20b52467c1df' into feature/platform-caps