Turbopack: extract core hmr client logic into shared runtime (#88912)
This PR mostly moves existing code. Most of the diff churn is from re-recording shapshots. This PR is nowhere as scary as the diffstat would have you believe.
This extracts the core HMR client logic, abstracting away hooks for platform-specific features like the websocket transport and page reload.
In a future PR this will be implemented as an in-process backend for nodejs server hmr.
Test Plan: CI, existing hmr tests