Use foreground requests for manual sync and error reporting

Adds a 'foreground' flag to Zotero.HTTP.promise() options

Also, can now pass successCodes: false to always resolve the promise and never
throw UnexpectedStatusException
Use nicer alerts for error reporting error messages