Empty file fixes
Moved leading underscore/platform check to driver

This also added __LEADING_UNDERSCORE on certain platforms
Check if we should exit outside the preproc/compile stages

e.g. ucc -E a.s was skipping preprocess (not .S) and trying to assemble.
Define __ASSEMBLER__ if preprocessing an assembly file
Checks for no-ops, such as "-S asm.s"