Implement cache operator

Returns an Observable that repeats the original Observable sequence to all subscribers.
The source Observable is subscribed to at most once.