Default to ~int in arithmetic ops
Summary:
Arithmetic operations (such as unary negation, ++, etc), default to integer types if the operands have completely unknown types. Unfortunately this doesn't get preserved under `--pessimise-builtins` because we determine `is_like=true` for `~#0`, and allow `#0` to be solved to `nothing`. Instead, let's only do this if the type is literally `dynamic`.
Also use same code for inc/dec operations as for unary negation.
Differential Revision:
D39052984
fbshipit-source-id:
4578a135be0596140d2b69ea0c04a968eb12f6f3