Initial implementation of ResourceWatcherService

Closes #4062