Initial implementation of downloading extension file from URL. Clicking Ok
in dialog triggers download, but we don't yet do the validation afterward.
No cancelation yet, and errors aren't exposed in UI anywhere.

Includes a few cleanups to improve Node connection error cases.
Support canceling pending downloads. Cleaner API from UI layer to Package
'backend' layer with state tracked more rigorously. Centralize wrap-up
code that runs when a download is over (for whatever reason).