jQuery uses getAllResponseHeaders function for getting response headers,
even for getResponseHeader. As far as I know, there is no easy way to
get original xhr object and call getResponseHeader on such object.
Because of that getResponseHeader is broken on firefox with CORS.
I rewrote Travis.ajax to use XMLHttpRequest directly in order to fix
this, the compatibility with jQuery.ajax is mostly handled.
CORS specification specifies "simple request", which does not need a
preflight OPTIONS request. The only thing, which we send and is
forbidding to send simple requests is Authorization header, which is not
needed for public endpoints.
Browsers disable local storage and session storage when cookies are
disabled - any call to one of those will cause an error. This commit
provides fallback storage, which will store items in memory.