Fix Window by Count Unsubscribe Behavior

This fixes https://github.com/ReactiveX/RxJava/issues/1546 where unsubscribes would occur prematurely for non-overlapping `window(size)` and would not unsubscribe at all for overlapping `window(size, skip)`.

It also reorganizes the `window` unit tests which were all combined in one file when the implementations are split across 4 files. This is now easier to understand and use.
I'm not sure ```window``` has proper Thread visibility here.