Enforce output & access to static properties via coeffects
Summary:
Write logic for conveniently enforcing an operation based on the
*local* capability if coeffects are enabled in the typechecker (noop, otherwise).
This is *always* sound; unsafe capabilities are only used for enforcing calls
to other user-space functions.
Enforcing an operation requires 2 lines of code, e.g.:
```
let enforce_static_property_access =
enforce_local_capability Capabilities.(mk globals) "Static property access"
```
and insert a single line during typing at the appropriate place:
Typing_local_ops.enforce_static_property_access pos env;
and **coeffect tracking does all the magic**!
Reviewed By: vassilmladenov
Differential Revision:
D24969913
fbshipit-source-id:
30ec8ebaf7cc27161af4eb6439224d4f1a67cef7