Add failing test case for `.pipe()`

Current behaviour of `.pipe()` does not allow for a filter to change the
state of the master deferred by returning a deferred in a different
state. For example, the `doneFilter` cannot return a rejected deferred,
which would in turn reject the master deferred returned by `.pipe()`.

Relevant bit from jQuery documentation
(http://api.jquery.com/deferred.pipe/):

    These filter functions can return a new value to be passed along to the
    piped promise's done() or fail() callbacks, or they can return another
    observable object (Deferred, Promise, etc) which will pass its resolved
    / rejected status and values to the piped promise's callbacks.
Rewrite `.pipe()` for ab294cca9a03cb75e60bdf1fa70b9cd395be52f0
fix single argument optimization for `.when()`
Merge pull request #18 from rraval/master

Implement jQuery compatible `.pipe()`