Async Responses

PR for issue https://github.com/trek/pretender/issues/41

- Makes responses asynchronous by default
- Responses resolve on the next run of the event loop by default
- Responses can be made synchronous by passing `false` for the async argument when specifying a route
```js
pretender.get('/sync/thing', handlerFn, false)
```
- Responses can be set to resolve after a specified time by passing in a number for the async argument
```js
pretender.get('/timed/thing', handlerFn, 300) // in ms just like setTimeout
```
- Responses can be set to never automatically resolve by passing in `true` for the async argument
```js
pretender.get('/manual/thing', handlerFn, true);
// ...
pretender.resolve('/manual/thing');
```
- Responses can be set to conditionally resolve by passing in a function for the async argument
```js
pretender.get('/maybe/async/thing', handlerFn, function() { return isAsync ? 0 : false; })
```
- A helper by the name of `pretender.requiresManualResolution` exists to check if a request will, well, require manual resolution.
Why isn't it up to the user to capture the request object they made and resolve it on their own? I know this makes it hard for people using Ember (where some part of the framework is making that request for you), but I do want pretender to be general use case. This might be the time where a ember-pretender comes it handy and snags the xhrs that Ember creates for you.