Adding ability to monitor file changes for PhysicalFileSystem

1. This includes the implementation & tests.
2. A modified IFileInfo interface (This will require changes to MVC repo - A PR will be sent out after this changes are approved.).
3. File system watcher turns off when there are no files to monitor and turns on when files are to be monitored.
4. Need to add a test to verify that file system watcher turns off if no files to monitor.

@Tratcher @pranavkm 
These regexes may potentially be reused when there are multiple patterns to be watched and if a pattern does not match a particular file CRUD operation then it will be tried matched again in future for another file CRUD.

On windows `a.txt` and `A.txt` are the same. This will introduce difference in behavior between different methods of `IFileSystem` interface. `GetFileInfo()` will return the right `FileInfo` irrespective of `a.txt` or `A.txt`, but `Watch` will not. @lodejard  mentioned that there is another place in K core stack which needs a similar fix as well. We might try to address both of them together with similar solution.