Virtualize boolean `!` instead of previous desugaring
Summary:
This diff changes the previous strategy for desugaring boolean not `!`.
Previously, we were not virtualizing for typechecking. And we were previously desugaring for runtime:
```
Example`!$my_bool`;
```
to
```
(Example $v) ==> {
return $v->exclamationMark(..., $v->localVar(..., '$my_bool');
}
```
Now, we will do the following, we will virtualize for typechecking:
```
`$my_bool->__exclamationMark()`
```
And the following for runtime:
```
(Example $v) ==> {
return $v->methCall(
...
$v->localVar(..., '$my_bool'),
'__exclamationMark',
vec[],
);
}
```
Reviewed By: Wilfred
Differential Revision:
D24878303
fbshipit-source-id:
406d637bc54879d7ec1097d99ead785f2416e5e9