Add wait index to Watch. 

Adds wait index to watch.

Removes use of tasks in watch.

FYI. I decided not to create an async only API.
I ended up needing a blocking version of Get and foolishly read these

http://msdn.microsoft.com/en-us/magazine/hh456402.aspx
http://blogs.msdn.com/b/pfxteam/archive/2012/04/13/10293638.aspx
http://blogs.msdn.com/b/pfxteam/archive/2012/03/24/10287244.aspx

TLDR writing async library code is complicated.
My feeling now is that it is better to have both a synchronous and asynchronous api and make it very clear when code blocks or is asynchronous.