Simplifying Producer and Consumer calls

Hello again.

I wrote some extensions to Producer and Consumer to allow calls like this:

```swift
imageDownloadManager
    .imageProducer(imageURL: imageURL)
    .deliverOn(MainScheduler())
    .next { image in
        cell.image = image
    }
    .error { error in
        cell.image = nil
    }
```

And this:

```swift
func imageProducer(#imageURL: NSURL) -> Producer<NSImage?> {
    return Producer<NSImage?> { /* [unowned self] */ consumer in
        let task = self.downloadImageDataFromURL(imageURL) { imageData, error in
            if error == nil {
                if let data = imageData {
                    consumer.putNext(NSImage(data: data))
                }
                else {
                    consumer.putNext(nil)
                }
                
                consumer.putCompleted()
            }
            else {
                consumer.putError(error)
            }
        }

        consumer.addDisposable {
            task.cancel()
        }
    }
}
```
(The examples above are based on a running code.)

What do you think?