CombineLatest without synchronization

Finally, I managed to get rid of all the synchronization in `CombineLatest` (it all boils down to two atomics and one concurrent map). As concurrency is always hairy to get right: Can someone please check that it's okay like that?

I also added static methods to `Observable` for it, and fixed the handling of exceptions within the combining function.