Clean up and fix `obj[args] op= expr` specs

Previously, the specs for this syntax sugar/expansion were doing more
testing of Array (and some Hash) return values, while this commit (in
addition to the previous c4f535bd1eabd682c66479253e5aed30c87250d6, which
ensured Array#[]= was testing the method return value rather than the
return value of `a[arg] = expr`) should make it more clear what is being
tested without reducing test coverage.

Some of the comments added in the commit may err on the side of
verbosity.

It's only `+=` that's covered here. Hopefully, if the structure for
these tests is acceptable, it will be fairly simple to create specs for
the rest of the op= combinations without adding undue boilerplate.