**Summary**
Fixes#4057.
**Test plan**
CI should pass, especially with `build-dist` job.
Manual:
- Run `yarn build-dist`
- Run `node artifacts/yarn-0.28.0.js --version`
- Run `./dist/bin/yarn --version`
Make sure all above commands work without errors.
* add init command - closes#360
* list available commands and examples in cli help - fixes#345
* add outdated command - fixes#379
* rename uninstall command to remove
* add global command - fixes#227
* remove command aliases
* fix licenses not being shown due to integrity check shortcircuiting - fixes#424
* turn aliases back into js
* clean up single instance arguments - fixes#308
* ignore arguments that are included after -- - fixes#251
* add unlink command
* add lint rule against non-language keys
* clean up Config initialisation
* add link command - closes#336
* support array of string engines - fixes#447
* add missing request cache fixtures
* polish link command
* remove gulp file output
* add config command - fixes#378
* add yarn.lock and fix constants
* update aliases
* add missing i18n for CLI
* make `upgrade` command work how you'd expect
* update test metamethod
* require arguments for add command
* move dependency objects into constnats
* add init command - closes#360
* list available commands and examples in cli help - fixes#345
* add outdated command - fixes#379
* rename uninstall command to remove
* add global command - fixes#227
* remove command aliases
* fix licenses not being shown due to integrity check shortcircuiting - fixes#424
* turn aliases back into js
* clean up single instance arguments - fixes#308
* ignore arguments that are included after -- - fixes#251
* add unlink command
* add lint rule against non-language keys
* clean up Config initialisation
* add link command - closes#336
* support array of string engines - fixes#447
* polish link command
* remove gulp file output
* add config command - fixes#378
* add yarn.lock and fix constants
* fix lint, copy test fixtures to temp directory rather than mutating cwd
* fix lint
* add handler for extractor errors
* remove unused jest snapshot
* fix check-lockfile script
* fix lint
* fix check-lockfile
* try and fix test
* properly copy over lockfile scripts folder, ignore ds_store files in test directories
* remove problematic fixtures
* add back problematic fixtures
* disable test
* Use built-in `stream.Transform` to create `HashStream`s
Since we're only targeting newer Node versions with a reasonable stream module, and we can use the `class` syntax sugar, it makes sense to extend `stream.Transform` directly to create a `HashStream`. In a future commit, this will allows to remove `through2` altogether.
Also, `HashStream` was previously mistyped as a `stream$Readable`, when in fact, it's a `stream$Transform`.
* Fix `cachedStream` type
`validateStream` (`cachedStream` is piped into it a few lines below) was mistyped as a `stream$Readable` instead of a `stream$Transform`. It's now correctly typed, so this isn't necessary.
* Use idiomatic streams to unpack tarballs
Instead of doing weird nested stream passing, there's now an `Unpack` stream constructor that can unzip a stream if the input is gziped, or passthrough the data otherwise.
* Unnest tarball saving streams
* Use `stream.PassThrough` for logging instead of `through2`
* Remove `through2` dependency