Fix autocorrect clobbering

While working on #553 and testing `--auto-correct` on lage code bases, I noticed that we would get errors from Parser because two corrections would conflict with each other. It seems that we have been rather lazy when implementing our auto-corrections, using the `replace` method everywhere. This PR tries to fix the problem by using more precise corrections on smaller ranges. There are also a couple of cases of double reporting that had to be fixed, since they would also lead to clobbering errors.