Passing new references to next middleware

This PR is a result of a discussion at https://github.com/segmentio/metalsmith/issues/18
I'd like to pass new references to the next middleware. Then you could use convenience methods like `Array.prototype.map` or http://lodash.com/docs#transform to transform the arguments.

It works like this:
```js
var middleware = ware()
  .use(function (arr, next) {
     next(null, arr.map(function (a) { return a * a; }));
  })
  .use(function (arr, next) {
    console.log(arr);
    next();
  })
  .run([ 1, 2, 3 ]); // 1, 4, 9
```

If a middleware chooses the new method is has to pass the same number of arguments (plus an error argument) to `next`. This is enforced by throwing an Error. I thought that this is not really an application error, so I didn't throw the error inside of the pipeline.