Made several changes to Mu's header structure and prefixes

Mu now uses a preprocessor template in its header files to limit
the amount of definitions introduced with each include. This allows
more flexibility with prefixes since most internal can avoid being
included.

Also, mu.h was introduced as a central location for defining compiler
specific definitions and other common definitions.

Additionally, the makefile now builds dependency files for header files.