Fix: comma-spacing to work with array literals (fixes #1492)

There's a whole lot of duplication here that's bugged me for a while. This bug was going to be my excuse to fix it. But I think it can all be reduced to:

```
if (options.before !== isSpaced(previousItemToken, commaToken)) {
    report(reportItem, getSpaceMsg("before"));
}
if (options.after !== isSpaced(commaToken, currentItemToken)) {
    report(reportItem, getSpaceMsg("after"));
}
```

If I weren't doing this from my phone, I'd provide an implementation for an appropriate `getSpaceMsg` function, but it should be just a simple computed property lookup in `options` using the single srgument as the property string as the condition for a ternary to decide which message (missing, extra) is appropriate. Let me know if that doesn't make sense and I can type that out.

And if you'd rather just keep the existing logic for this fix, I can open a new issue and PR later.