Make directory watching multi-level

This fixes the Watcher type so that it properly descends into
directories and watches all subdirectories. This allows serving files
from a subdirectory.