Honor timeout parameter in extensions.Ajax.apply

Apparently, the `timeout` argument for `extensions.Ajax.apply` is ignored.
https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/Synchronous_and_Asynchronous_Requests#Example.3A_using_a_timeout

When timeout occurs, `req` would be `readyState == 4 // DONE` and `status == 0`, so `apply` returns `Failure(AjaxException(req))`.