## Description
This PR introduces tree shaking for package dependencies. The package
dependencies that are not referenced in code (directly or via trans
deps) are removed.
## Test plan
Added tests in `sui/tests/data/tree_shaking`
```
cargo nextest run --no-fail-fast test_tree_shaking
```
---
## Release notes
Check each box that your changes affect. If none of the boxes relate to
your changes, release notes aren't required.
For each box you select, include information after the relevant heading
that describes the impact of your changes that a user might notice and
any actions they must take to implement updates.
- [ ] Protocol:
- [ ] Nodes (Validators and Full nodes):
- [ ] gRPC:
- [ ] JSON-RPC:
- [ ] GraphQL:
- [x] CLI: `sui client publish/upgrade` will now by default remove
dependencies that are not referenced in source code from being published
on-chain.
- [ ] Rust SDK: