Fix duplicate requests to provider sites

When the user follows a link from a proxy-by-port EZProxy to another
proxy-by-port EZProxy, we make an additional request to the target site
with no cookies. This yields a redirect to the EZProxy login page. We
use the query parameters to determine the true domain of the site.

Previously, we allowed the redirect to continue, and used the same code we
use to detect EZProxy logins to map the proxied domain to the true domain.
This caused duplicate requests to providers and apparently infinite loops.

We now read the query parameter directly from the redirect to the EZProxy
login page and then cancel the request so that the redirect doesn't get
followed.

The changeset also improves logging of proxy-related information.

See https://forums.zotero.org/discussion/28505/ for further discussion.
ConcurrentCaller -- run a fixed number of concurrent async functions

If the functions return promises, the caller will wait until they're
fulfilled and slots open to start new functions.
Fix WebDAV file purging

Deleted files are purged at the end of every sync, without any delay.
(If there's a conflict, it will be resolved before the file is deleted.)

Orphaned files are deleted once every 10 days, since it's a potentially
expensive operation for the server.
Replace some uses of Q.allResolved() with Q.all() in storage sync
Fix WebDAV file sync conflict
Update locales from Transifex
Update translators and repotime
Update versions
Merge branch '4.0'

Conflicts:
	install.rdf
	update.rdf