Introduce Terr in place of Tany for type errors
Summary:
The `Tany` type is used for at least three purposes in the type-checker.
1. To represent the absence of type information on parameters or results for functions non-strict files
2. To represent the absence of type information in some typing rules inside the type checker
3. To avoid cascading errors inside the type checker
Going forward, we will be taking type `dynamic` seriously, which is roughly the first two uses above. But it makes sense to separate the third one, introducing a new type `Terr` that is compatible with all other types and so doesn't cause errors to cascade.
For now, `Terr` is treated mostly the same as `Tany` in the code, but in future we will use `Tany` as the representation of `dynamic` and it won't necessarily unify or be treated as compatible with all other types.
Reviewed By: hubyrod
Differential Revision:
D3686950
fbshipit-source-id:
2999bcf5b61ee71b3f7f9a6fb641661c5e28304d