Fix issue with this.emit()

Hi,
I noticed this error pop up when using gulp-pandoc

````
node_modules/gulp-pandoc/index.js:30
      if (err) { this.emit('error', err); }
                      ^
TypeError: Object #<Object> has no method 'emit'
    at node_modules/gulp-pandoc/index.js:30:23
````

It seems that `map-stream` does not call mapper function with the context of the stream but the global object contex because of which this.emit() will not work.

https://github.com/dominictarr/map-stream/blob/master/index.js#L84  in map-stream/index.js should ideally be for one to use this.emit() in the mapper function.
````diff
+ return mapper.call(stream, input, function(err, data){
- return mapper.call(null, input, function(err, data){
  callback(err, data, number)
})
````

I have updated to use https://github.com/rvagg/through2 and added a test to verify errors are emitted when something is amiss. Let me know if you have any comments/feedback.

Thanks!