JsCompiler: exit code and error message when no file to compile

I managed to make it not compile anything quite often with it telling me it was wrong
JsCompiler: allow passing a Writer for stdout/err and handle our own logging without JUL

This is more in line with the JVM compiler
Added DiagnosticListener for ceylon/ceylon.language#488: Ceylon embedded runner
JsCompiler: use a specified Writer so APIs can shut it all up or collect output, for ceylon/ceylon.language#488: Ceylon embedded runner
Added throwOnError for compile/run tools to make APIs not call System.exit for ceylon/ceylon.language#488: Ceylon embedded runner
CeylonRunJsTool: make the node process exit with a non-zero code on missing main function for ceylon/ceylon.language#488: Ceylon embedded runner
CeylonCompileJsTool: make the typechecker shut up for ceylon/ceylon.language#488: Ceylon embedded runner

So we don't print errors twice
JsCompiler: make sure we set up the logger before we use it for ceylon/ceylon.language#488: Ceylon embedded runner
JsCompiler: properly identify error nodes for ceylon/ceylon.language#488: Ceylon embedded runner