Operator Window

Operator Window

Issue #1060

Significant changes have been implemented in the new Window operator's behavior:
- The original sized, timed and start-end observable versions waited until a window has finished and emitted the buffered values as a single ```Observable.from```. This is not how the Rx.NET version behaves where once a window is open, values are delivered as they appear from source. This has the same effects as ```groupBy``` where Observable windows not subscribed immediately will not deliver all values. Probably this is why Clojure test ```test-partition-all``` fails, but I don't know how to fix it there.
- The callback boundary-observable version, similar to the buffer variant before, constantly created a new observable for each value. This new version, consistent with the new buffer, uses one boundary source per subscribing client.
- The exact variants (such as size == skip, timespan == timeshift and observable boundary) make extra effort to ensure all events are delivered into one of the windows, i.e., no event will fall between the closing and opening of a window gap when it concurrently appears from the source.

This rewrite needs more meticulous review due to the changes and their concurrency effects.