Add async methods to EtcdClient

I've changed all the EtcdClient methods to async and added extension methods to IEtcdClient to keep the api the same.

For the async version of Watch I've got rid of the callback.
The Watch api is a little inconsistent as the standard Watch is still doing an async callback rather than being a blocking version of the async method.