Changing Server to implement IServer interface.

Currently if you want to implement your own server you have to call one of the two consturctors, both of which require String url.

This PR add's an interface that Server and Changeable server implement so you can one can add their own implementation without being bound to extending Server.