Inotify

I think I could fix an inotify issue - https://code.google.com/p/go/issues/detail?id=2483
see https://github.com/chamaken/inotify
And then I am glad if I can backport it to your fsnotify. Would you review the patchs?

> If I am watching a directory, and delete it, and recreate it, 
  and watch it again, any events after that are hosed:
> * the event.Name is incomplete, with the path stripped out e.g. 
    instead of /home/myname/a/b/c/d.txt, I get /d.txt
    instead of /home/myname/a/b/c/, I get ""
> * RemoveWatch fails with message: invalid argument
> * Close() doesn't really close. Most times, the reader goroutine hangs.

You are true, I introduced length() and isRunning just for test.