Allow grep to handle filenames with colon characters.

By default the file name and matching line are separated by a colon, but
that makes it hard to tell which colon is the separator if there is more
than one colon.
Implement a file watcher abstraction to support continual rebuilding.
Use watcher to encapsulate source directory.
Enable the --watch option for continual rebuilding.

Really happy with this.

Closes #3.