Implement ConnectableObservable and Observable.publish

Hi,
I hope you appreciate this implementation. Most of it is a quite straightforward mimic of the .NET version. Could you perhaps verify if I used the lock and the subscription wrapper correctly?

Following the behaviour of the .NET Rx implementation, a ConnectableObservable
consists of a Subject that can be connected to its source Observable by calling
the connect() method. The Observable.publish() method can be used to create a
new ConnectableObservable for the given Observable.

Greetings,
Gerben