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.