OperatorBuffer

Operator Buffer, split into 4 variants.

Issue #1060.

There are some important behavioral changes compared to the original versions:

- When an onError event appears from anywhere, the currently accumulated chunk(s) are *NOT* emitted before the error is propagated. This conforms with Rx Design Guideline 6.6.
- The Observable returned by the Func0 inside the ```buffer(Func0<Observable<B>>)``` now is used as long as possible and whenever it fires an event, a new buffer chunk is started. The Func0 is called only once per subscriber. The original called it and subscribed to it all the time, causing all-increasing resubscriptions.