webui: Improve dx

For local development, switch to Vite and update web components for improved demo experience. Note that we haven't changed how we bundle when we're actually running in sketch; that's still the go/esbuild in-memory setup. This just changes demo dev setup to get breakpoints working and a functioning full sketch-app-shell.

We still need to add some mock data, but this is a start

- Introduced `vite.config.mts` for Vite setup with hot module reloading.
- Updated `package.json` and `package-lock.json` to include Vite and related plugins.
- Refactored demo scripts to utilize Vite for local development.
- Created `launch.json` for VSCode debugging configuration.
- Enhanced `Makefile` with a new demo task.
- Improved styling and structure in demo HTML and CSS files.
- Implemented `aggregateAgentMessages` function for message handling in web components.
diff --git a/loop/webui/Makefile b/loop/webui/Makefile
index 662cfe7..2ce27f5 100644
--- a/loop/webui/Makefile
+++ b/loop/webui/Makefile
@@ -3,6 +3,9 @@
 install:
 	npm ci
 
+demo:
+	npm run demo
+
 # TypeScript type checking
 # Note: The actual esbuild bundling happens in esbuild.go
 check: