Function and BasicBlock are considered part od the Data Model and part
of the core. Move them there.
Also remove lots of #include from the headers and replace them by
forward declarations. This should make compilation units smaller and
remove the huge number of users for each header -- speeding up
compilation and making users explicitely include stuff they use.