Add -noEmit compiler flag that skips the emit stage in ts.compile()

Fixes #1172

I'm not sure about the third commit. -out and -outDir are optional to begin with, and a lot of the other options also don't make sense when not emitting - -declaration, -emitBOM, -mapRoot, -module, -preserveConstEnums, -removeComments, -sourceMap, -sourceRoot. Should it check for all these parameters? Or just give -noEmit precedence and silently ignore them (i.e. just the first two commits)?
Ah yes, I see what you mean. For declarations, the emit and typecheck happen together.

I will do option 1 for now, since for option 2 or 3 I have to make a new emitter that has stubs for the methods that actually write things.