Added better watch implementation of TypeScript gulp task that only re-compiled changed files.
Tell gulp.src not to read file contents since we read the files ourselves.
Split test runner into its own file that doesn't need gulp to run.

This allows the tests child process to start nearly instantly since it doesn't have to spend a few seconds loading gulp.
Support top-level classes and free functions in AST walker.

While libjass will never have these, they can occur because of what's actually a compile error. Thus while the AST walker will succeed, the subsequent call to compiler.compile() will fail.