Make tire.ajax return a Q promise if it detects Q

If success or error callbacks are defined in options, they are invoked before the promise is fulfilled.
The promise will resolve to xhr or to the return value of the success callback.
If the promise is rejected, the reason should be an object with `reason` and `xhr` properties, where the value of `reason` is a string.

Tire does not depend on Q. tire.ajax will only use promises if Q has already been loaded (or if Q has been specified in an AMD environment). Otherwise, it will behave in its traditional manner.