Fix Issue 12051 - Wrong code with ?: resulting in char on x86-64
Move Expression::implicitCastTo into a visitor class
Merge pull request #3246 from yebblies/implicitcastto2

[DDMD] [refactor] Move Expression::implicitCastTo into a visitor class
Refactor Type::toCBuffer* and helpers into a visitor class in hdrgen.c

- Move the main function Type::toCBuffer2 into the visitor class
- Move TypeQualified::toCBuffer2Helper into an internal helper function
- Remove one-caller function attributesToCBuffer into caller
- Factor out repeated safety and linkage printing
- Rename functionToCBuffer2 to functionToBufferWithIdent
- Rename toCBufferWithAttributes to functionToBufferFull
- Do special-case checking in Type::toCBuffer instead of overriding in TypeFunction::toCBuffer and TypeError::toCBuffer
- Move Type::toCBuffer3 into internal helper visitWithMask
- Rename toCBuffer2 to toBufferShort and make it a free function
- Move Type::toCBuffer into a free function
Clean up errors in implicitCastTo refactoring not caught by the C++ compiler.
Merge pull request #3248 from yebblies/implicitcasttofixup

Clean up errors in implicitCastTo refactoring not caught by the C++ compiler
Merge pull request #3238 from yebblies/typetocbuffer

[DMDD] [refactor] Move Type::toCBuffer into a visitor class
Move Expression::castTo to a visitor class
Merge pull request #3247 from yebblies/castto

[DDMD] [refactor] Move Expression::castTo to a visitor class
Move Expression::toCBuffer and helpers into hdrgen.c
Make bool -> int conversion explicit to silence VC build warnings.
Merge pull request #3249 from yebblies/exptocbuffer

[DDMD] [refactor] Move Expression::toCBuffer and helpers into hdrgen.c
Merge pull request #3250 from AndrejMitrovic/FixVCWarning

Make bool -> int conversion explicit to silence VC build warnings.
Merge pull request #3182 from yebblies/issue12051

Issue 12051 - Wrong code with ?: resulting in char on x86-64