[DO NOT MERGE] Unresolved differences between gdc/dmd front ends

I recall mentioning this in one of the DDMD pulls.  FYI @yebblies

This covers all current unresolved differences between gdc and dmd front ends  (and acts as a TODO list).  An internal goal is to have them 100% shared code bases by release 2.065.  This makes a transition from the D front-end implement from C++ to D more of a 'drop in' (and is arguably a blocker and hindrance for adoption of the new implementation),  and also relieves a *HUGE* maintenance burden when it comes round to merge-time.  However such a goal requires a bit of tug and pull from both sides of the fence so I'm raising this here to allow discussion with any core devs to iron these out in a way that we can say good riddance to the IN_GCC macro.

The diff can be summarised into the following points:
- Internal backend types differ
- Use of fprintf(stderr) instead of printf
- Built-in functions are instead CTFE'd in glue part of front-end.
- real_t requires special handling as is not host float.
- PowExp does not depend on std.math.
- Differing _argptr, _arguments and va_list front end implementation.
- Always use cppmangle.c for C++ mangling
- Support for a bespoke -femit-templates switch
- Support for GDC Extended Assembly in parser.
- mars.c is only used for verror and friends (front end entry point is in glue)
- Rejected/not yet pulled fixes for things done in the front end that send invalid/garbage code to the glue part of the front-end.

@yebblies - or anyone else - if you have any questions or suggestions, anything is welcome.  Also let me know if you'd rather this broken down... :o)

Will be sending separate pulls for things that can be folded in immediately...

Thanks
Iain.