Add tests for $.ajax()

This uses a modified version of node-xmlhttprequest plus a faked
node.js http module implementation to enable fake XMLHttpRequests
to be intercepted and tested.

One shortcoming at the moment is that it doesn't test the
data written during the request, only the headers sent.
Add simple test for jsonp()

This tests the case where the jsonp request is made with
a callback name hard-coded into the returned script file.

The other use case for jsonp is where the script is requested
with a querystring like "http://host/script?callback=mycallback".
The server then returns a script with the callback name
from the querystring embedded, e.g. "mycallback({a: 1, b: 2});".

As this requires processing on the server-side (to extract
the querystring variable and customise the content of the
returned script file), there's no test for this case yet.
Switch to an express server for testing $.ajax()

The previous approach (using a hacked xmlhttprequest plus
custom http implementation) worked for $.ajax(). However, it failed
for some $.jsonP() requests, where we expect the server to
use querystring variables to tailor the returned script file
to the request (i.e. wrap the returned JSON in the callback
specified in the querystring).

By using a custom express server instead, we can still support
the same set of $.ajax() tests, but can also do full $.jsonP()
testing.

Note that this opens a random, unallocated, high-numbered port
on the host running the tests for the server. The server should
be closed after running the tests.

Also note that we still have to use node-xmlhttprequest, as
jsdom's XMLHttpRequest doesn't support POST. In addition, we
also modify node-xmlhttprequest so that it can return XML
(the original doesn't set responseXML, which is used by
appframework).
Modify $.jsonP() test to use server
Add test for $.jsonP with success property

This tests that an anonymous callback is provided in the
querystring in a jsonp request, where the success callback
is passed to $.jsonP().
Add $.ajax() test for failed requests
Enable setting a pause on responses from the test server
Add test for $.ajax() timing out
Minor fix to comments about xmlhttprequest modifications
Merge pull request #371 from townxelliot/http-tests

Add tests for $.ajax() and $.jsonP()