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 
TokenSource is an implementation detail, make it private and just add a Changed() method.

Also note that CTS.Cancel() executes all the registered callbacks inline, not to mention re-throws their exceptions. I don't think you want that happening inside of your OnChanged event, there's no telling what it will do to the FileWatcher. Push it to the threadpool with a Task.Run and catch all exceptions.