Implement Observable.partition

Implemented functionality to split a stream into 2 separate streams based on a boolean function.

Known issue: weird functionality with synchronous streams, same as adding to separate filters to a synchronous stream: the one that gets a subscriber will eat all the values, even the ones that should go into the other stream. Is this ok, or is there a way to fix the problem?