Code review: download files to OS temp folder (with dummy unique filename),
and pass a hint about the extension name to install() instead of having it
be directly based on the downloaded filename.
Also:
- Clean up handling of validation errors so the strings are rendered in
the UI properly.
- Tweak NodeConnection's error handling so exceptions thrown by client
code (such as Package.js or its clients) aren't misrepresented as
"received malformed message".