move firm related things from driver subdir to firm subdir

This also moves ast2firm.c into the firm subdir, and firm_machine back
to the general code renamed to machine_triple.
move some code around to parser and ast directory
move declaration of position_t to a header in the ast subdir

this breaks a bunch of unnecessary dependencies on the parser dir
move most of the remaining files to the driver subdir
move compiler source files to src subdirectory
move revert_automatic_type_conversion() from parser.c to ast.c

This avoids another unnecessary dependence of the ast dir from the
parser dir.
move alias_entities from parser.c to attributes.c

This breaks an unnecessary ast->parser dependency
move builtin_kind_t from builtins.h to entity_t.h

This breaks an unnecessary ast->parser dependency
remove unnecessary include

This breaks an unnecessary parser->firm dependency
modularize compilation sequence

We now have callbacks registered to handle different compilation unit
types. So for example when exporting JNA declarations another callback
is registered for the AST unit type.
move C compilation specific code to c_driver, move compilation mode to main.c
simplify main by moving initialization code around
fix warnings
Makefile: cleanup, build libcparser.a
move firm/firm_timing.* to driver/timing.*