Simplify supportdyn<t>
Summary:
We're generating a lot of superflous `supportdyn<_>` e.g. when doing indexing on `supportdyn<t>` for an open shape `t`. This is sometimes blocking typing e.g. `foreach` on `~supportdyn<~vec<t>>` fails (under `--pessimise-builtins`).
When constructing `supportdyn<t>`, push `supportdyn` under intersections and unions, and elide it if `t` already supports dynamic.
Reviewed By: francesco-zappa-nardelli
Differential Revision:
D34869613
fbshipit-source-id:
9839e75fc2d5b8514b876e78c08306212791b4e6