Switch to a 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).