Forbid modifications of strings in the compiler

This disallows `str[0] = foo` along with `foo = &mut str[i]` to prevent strings
from being modified at runtime (except possibly through the `str` module)

Closes #8891
auto merge of #9750 : alexcrichton/rust/safer-strings, r=brson

This behavior was decided to get out-right forbidden by the compiler


Closes #8891