Allow any observable to be used as a controller to `pausable` and `pausableBuffered`

Possible fix for https://github.com/Reactive-Extensions/RxJS/issues/255.

This PR has 3 parts.

  1. The methods `pause` and `resume` in `PausableObservable` and  `PausableBufferedObservable`
      were faulty because they didn't account for external change to the controller.
  2. `PausableObservable` and  `PausableBufferedObservable` were reworked to allow passing any `Observable` as a controller.
  3. The methods `pause` and `resume` were documented.