add some basic stats, and test case

1,
I know the stats name is ugly...
some name strategy is under consideration, like xxxErrors, Successfulxxxs,

2,
Concurrent correctness has not been tested

3,
I can not find a way to use relative path for the "error package", so I used absolute path, ("github.com/xiangli-cmu/etcd/error")

4,
To avoid infinite loop when call json.Marshal, now the Watcher under the FileSystem has a member of a Stats pointer, which points to the same Stats owned by FilesSystem