safely remove output_file, which may not exist

For example, in clang-425.0.28 (what Apple ships as `cc` on OS X 10.7),
a failed compilation does not generate an output file. But in
clang-503.0.40 (OS X 10.9), it does create a zero-sized output file.
test for existance of output_file before remove
Merge pull request #157 from maverickwoo/master

safely remove output_file, which may not exist
Split out the types representing C code.
Remove unused 'env' parameter from C code printing functions.
Split out C pretty printing into a separate module.