#330 implement the -watch parameter

Based on the work done in #331 by @lbargaoanu and #560 by @filipw (all commits rebased to latest dev and squished).

![image](https://cloud.githubusercontent.com/assets/677704/2937543/38fc65a6-d8b0-11e3-8e53-ff49b38d5e46.png)

Key points:

* It's now all in scriptcs.exe. No changes to core
* No unit tests. For these changes, I believe the RIO just isn't worth it. We need acceptances tests for these kinds of features, but that is currently blocked by #428
* I implemented my own `FileWatcher` instead of using `System.IO.FileSystemWatcher`, which is notoriously unreliable. I tried using it first but it just wouldn't work for me. The custom type also allowed me to just plug in our `IFileSystem` abstraction, which is nice. `FileWatcher` currently lives in `ScriptCs.Command` but later it can be moved down into a lower level assembly if we ever find the need to reuse it.