Refactor tests to test multiple versions of jQuery

This commit introduces a framework which leverages RequireJS
to run the test suite for multiple versions of jQuery at once.
I think the jquery-versionmanager framework may be worth splitting
into its own little module at some point, but for now I am just
going to inline it here.
Move jQuery shim to jquery-versionmanager

jquery-versionmanager should handle all the jQuery stuff.
This change seems to fix the issue with the global jQuery
object flipping around and occasionally failing tests.
Continue refactoring tests

* Add an explicit check to make sure jQuery instance matches to plugins
* Remove advice to install git hooks for the time being, since there
  seems to be some issue with phantomjs, grunt-contrib-qunit and
  requirejs that prevents the command line version of the tests from
  working. Until I can figure it out, tests will have to be run in a
  real browser.
* Change baseUrl to a better location, since I found the way to
* explicitly specify where the RequireJS text plugin is.
Test all jQuery versions by default

Modify jquery-versionmanager to test all versions of jQuery unless
explicit versions are passed in.
Make `this` equal to middleware object in hooks

It seemed like the hooks passed in through options should
probably have the middleware object passed in as context,
since it might be needed. Updated code to do that and added
a unit test.
Improve nesting logic so it works in jQuery < 1.9

After improving the test suite to run against all supported versions of
jQuery each time, I discovered that the LIFO ordering test was failing
in all older versions. This turned out to be due to a different in the
way prefilters and transports are processed in jQuery >= 1.9.

In newer jQuery, the first prefilter with change the dataType, then its
transport will activate and handle it. Then the next one will step up
and do the same. In older versions, however, all of the prefilters will
apply first, and then only the last transport will activate, which
prevent them from nesting properly.

Details
-------

* Move setting the flag that determines whether a middleware is done
  with things to the transport.
* Set an additional flag in the prefilter to indicate that some
  middleware is already handling the request, and unset it in the
  transport.