Moves KVO registration into `-(id)init`

I was getting some errors on `-(void)dealloc`, on this line:

```
[self removeObserver:self forKeyPath:@"socketState"];
```

Moving KVO registration into `-(id)init` will make sure that KVO is always registered.