Make struct watched_fd opaque

It was only holding a pointer anyway.