This was almost a no-op, except we intern JS exception messages. So the bulk of this patch is porting exception messages to UTF-16.
CacheStorage::has()
This is a step to get https://web.telegram.org/a/ login working.
With this change we can again open login form https://discord.com/login instead of failing in js because `caches.open()` is not defined.