feat: add package discovery trait and a few discovery strategies (#6275)
This adds a trait for discovering packages (paths to package and
turbo jsons) using a variety of strategies:
- **local**: runs in-process and does a recursive walk of the FS
- **watch**: runs a file watching thread maintains a list in memory
- **daemon**: makes a request to a remote service over GRPC
- **timeout**: attempts a primary strategy and falls back in the event
of errors or a timeout