Upgrades our build scripts to target ES2017 since they are run on modern versions of node
This allows us to remove shims for es6 features such as `Object.assign`, and also remove a few extra typings packages
Part of #60565
Adds a new `tsconfig.strictNullChecks.json` project that does not emit anything and is only used for enabling strict null checks on a subset of the vscode codebase.
Opt `iterator.ts` into strict null checking.
Fix our build scripts to properly handle `extends`
Using a custom version of the node typings is causing a lot of pain while trying to upgrade our build to use `@types` instead of the `d.ts` files we have to maintain. I believe we primarily maintain our own version for two reason:
- Custom require function
- setTimeout and other timer functions return NodeJs.timer instead of a number
These can both be delt with, the first by using interface augmentation and the second by switching to use any types for timer. I believe that the pain of maintaining our own node `d.ts` outweighs the benefits here
This change switches us to use the standard @types/node package for our node typings