Makes responses asynchronous

All responses are resolved after a setTimeout of 0 ms.
Adds a variety of async/sync options for endpoints

The `async` parameter for handler creation takes multiple possible values

bool `false` - request will be synchronous and resolved immediately
bool `true` - request will only be resolved when manually resolved using
  `pretender.resolve`
number - request will be resolve asynchronously after n milliseconds
undefiend - request will be resolved asynchronously in the next step of the
  event loop
Adds utility for determining whether or not a request needs to be manually resolved

This is useful for frameworks such as Ember which automatically wait for async
things to end before continuing.

This allows such functions to be overriden and filtered.

For instance:

```js
Ember.$(document).unbind('ajaxSend').bind('ajaxSend', function(e, jqXHR, props) {
  if (pretender.requiresManualResolution(props.type, props.url)) {
    e.stopImmediatePropagation();
  }
});
```