Implement watching option in the TestRunner class.
Add watching option to the binary.

The way this feature works is that it runs all tests on the first run when --watch is passed and then idles while watching the testPathDirs and when something is changed, deleted, or added, tests will be run that relates to the changed file (or dir).

I implemented this in TestRunner to be able to reuse it internally. And by doing so I had to move a lot of the file pattern matching logic into the class. But I think it's seems like it belonged there anyways.