Readonly enforcement for SetM
Summary:
Enforcement of SetM Readonly for properties
Assume readonly COW Collection types cannot be modified.
```
<expr>[5] = $x; // <expr>, $x must be mutable
<expr>->c = $x; // <expr>, $x must be mutable
<expr>[5] = readonly $x; // Hack error. <expr> must be readonly and you are modifying readonly value.
(1) <expr>->c = readonly $x; // <expr> must be mutable, c must be readonly.
```
These are all property accesses so we only need to cover that path for this bytecode.
I tried to be conservative when threading more information through to only the places that were necessary for this check.
Reviewed By: ricklavoie
Differential Revision:
D27475886
fbshipit-source-id:
8c4cd0e3902d8866f5f1d012b53699fcf50a225e