OperatorDebounce

Operator Debounce

Issue #1060

Two notes:
- The behavior of the timed debounce has changed. In the original, if an onCompleted event arrived after an onNext event, that last value was lost. This new version emits the last value if it can then completes. This is consistent with the selector-based debounce operator from before and now.
- In both overloads, when the emission is run in parallel with the onCompleted of the main, the last event might or might not reach the client subscriber: one of the threads will grab the last value, but the call to the client.onCompleted might prevent the value delivery in the emission thread. This couldn't happen in the original as the event emissions where performed under the lock as well. We need to decide if we want to handle this corner case.