Client side refactoring

-- Introducing a EurekaClientRegistry which feeds to all users of the client.
-- Separated eureka-server, eureka-read-server and eureka-write-server
>>> The channel returns the actual stream from the transport, whereas we want to return here the stream from the underlying actual registry. 

Good catch. Thanks, will change.

>>> We should ignoreAllElements for this stream 

`switchMap` is a more appropriate operation as `concat` waits for the previous stream to finish.

>>> we should change the InterestChannel interface of register to return Observable to denote just the success/failure of creating the initial channel.

Yes, I agree. We should merge register and upgrade into just upgrade which makes the contract much simpler.