iASL: Fix mysterious "could not delete file" errors.

This fix ensures that the intermediate preprocessor .i file is
closed before an attempt is made to delete it. This has to be
done with care, because it may be the same as the global input
file, depending where/when the compiler terminated/aborted.
iASL: Abort compiler immediately upon a #error directive.

There may not be a standard on this, as some C compilers seem to
abort immediately, others not. For iASL, we will abort
immediately on a #error preprocessor directive.