Fix: crash in no-multi-spaces on empty array elements (fixes #1418)

Turns out I was unable to reopen #1491.

In addition to fixing the crash, this handles a few new cases with arrays that weren't handled previously, including extra spacing at the beginning and the end of the array.

I also changed the reporting messages to specify whether the extra space is before or after the reported token.
There's a lot of magic going on here, really hard to follow. Can you try to make this clearer by breaking it up a bit?