main.c refactoring/splitting

This splits up some parts into their own files:
- driver.*    compilation driver (manage order of preprocessing,
                compilation, codegen, linking, etc.)
- predefs.*   predefined preprocessor macros
- tempfile.*  temporary file management
move help strings from main.c to help.c
sort main.c includes
start working on moving option parsing out of main
fix compile error
group language dialect options in a struct

Code is a bit clearer now and some bad ordering problems where we query
the c dialect before actually processing a source file are more clearly
visible now.
group target machine specific settings together

This should make the code a bit simpler and makes it easier to see stuff
depending on the selected target.
further moving of options to options.c
move timing and statev to options.c