etcdserver: handle watch timeouts and streaming

```
; time curl localhost:4001/v2/keys?wait=true
context deadline exceeded

real	0m10.009s
user	0m0.004s
sys	0m0.001s
```
This implies a divergence from 0.4.x behaviour, but afaict 0.4.x behaviour was quite broken.

Specifically, watches now properly obey the [streaming spec](https://trac.tools.ietf.org/html/rfc6202#section-3.1) - writing the content length and carriage returns/newlines for each event.