added timeout operator

Why doesn't `onError` also cancel the scheduled task? Also the grammar must be respected ([rule 1.2](https://github.com/monifu/monifu/wiki/Rx-Contract-and-Design-Guidelines#12-the-grammar)), yet this can end up sending 2 `onError` events instead of just 1, coupled with the problems I mentioned above.