InferredAnnAssignRewriter repeats types when unnecessary
The following
```py
sum = 0
for i in range(10):
    sum = sum + i
```
is altered by `InferredAnnAssignRewriter` to become
```py
sum: int = 0
for i in range(10):
    sum: int = sum + i
```
This is still correct, however the inner `sum` already has a type, and it "looks wrong".

It is arguably useful for the inner `sum` to also have a type in the output, so that other tools can assume that the expr after the `=` wont change its type.  i.e. they don't need to determine whether `i` is an int or float or something weirder.

However most tools already assume that the same type will be maintained throughout the scope, or that it is the same unless explicitly changed, in which case this extra `: int` is noise, and reduces the chance that a human will notice when one of them has a different type from the original definition.