Fixed the issue that 'take' does not call 'onError'

I fixed one of the issues in #417: `System.out.println(Observable.from(1, 2, 3).take(1).map(f).toBlockingObservable().single());` is never terminated.

This issues is because `take` does not handle the exception throwing from `onNext` correctly.