feature: load‑aware file distribution (based on total requested file size)
- server-registry — Map<URI, Long> (no UUID). Load = sum of file sizes across all active requests
- statement-cache — Map<String, HandleState>. Replaces multi-key cache
- HandleState record bundles query, file paths, owning server URI, and byte weight — TTL 10 min via Hazelcast expiration
- EntryExpiredListener on statement-cache decrements server load when a cached statement expires — ensures load eventually consistent even if a server crashes mid-request Closes #6 (closed)