Command parameter handling simplification

* Varargs and array params are treated the same (must be at the end of the command params)
* Array params are always optional, and will be sent an empty array if not provided with any values
* The string parameters for array params are not escaped/unescaped, joined into a string or anything like that. Instead when an array param is reached, all remaining string params are sent to it and converted into an array.

From a user perspective, all commands are just a list of whitespace separated parameters with the option to use quotes to effective escape spaces. (TODO: consider allowing quotes to be escaped). From a developer perspective, they are allowed to have either a vararg or array param at the end of their methods.

An example method/usage:

```
@Command
public String test(@CommandParam("first") String first, @CommandParam("additional") String ... additional) {
  return 'first' + " " + Arrays.asList(additional).toString();
}
```

Usage:
test "one" "two" "three" "four"
> 'one' [two, three, four]

test "one"
> 'one' []