Make verror extern(C) so it can be written in D and called from C++, even though va_list has a different type in dmc and dmd
Refactor macros in arrayop.c
When we check two type objects equality, we should use Type::equals instead of directly pointer comparison.
Default args and arg identifiers are now volatile information in TypeFunction.

1. The extra informations would be kept after semantic analysis for function pointer and delegate types. But merging type would strip all the extras from the type structure, then cache the stripped copy into.

2. The types has extra informations cannot be named. In other words, AliasDeclaration would always strip the aliased type. This rule also works for Template Type Parameter, and fixes issue 3646 well.

3. CondExp would strip them from the type of its result.
Improved fix for Issue 3866 - anonymous delegate with default parameters cross-talks to another anonymous delegate

This reverts commit acc22ce25db42facfe4917aeceabd28a410f4c95,
and moves original test into runnable/functype.d
fix Issue 3646 - Default values of function arguments are ignored when instantiating a template.
fix Issue 8579 - Default parameter appears a part of typeof().stringof of a function variable
Fix CppMangle issue

Use merge2() result for function argument types mangling.
fix Issue 10462 - interface thunk doesn't preserve EBX
fix Issue 10475 - destructor is called on 'for' loop variable even when initialization failed
fix Issue 4899 - Ddoc: Warnings about stray parens do not include file and line numbers for module comments

Add ModuleDeclaration::loc and use it for "Stray paren" ddoc warning.
Merge pull request #2278 from WalterBright/fix10462

fix Issue 10462 - interface thunk doesn't preserve EBX
Merge pull request #2286 from 9rnsr/fix10475

Issue 10475 - destructor is called on 'for' loop variable even when initialization failed
Fix issue 10198 CTFE struct Multidimensional block assignment

There are two bugs. (1) The code in todt.c ignored the possibility
that an initializer could be explicitly specified in the struct literal.
This is not the same as an initializer specified in the declaration of
the field.
This wrong behaviour was actually coded into a test in test42.d.
(2) The CTFE code didn't consider the multidimensional case.
Merge pull request #2291 from 9rnsr/fix4899

Issue 4899 - Ddoc: Warnings about stray parens do not include file and line numbers for module comments
fix Issue 10506 - Purity should not be checked in a mixin statement
fix Issue 10254 - Purity correctness is broken with constructor
Merge pull request #2135 from 9rnsr/fix10254

Issue 10254 - Purity correctness is broken with constructor
fix Issue 10526 - opDispatch with IFTI should not disable UFCS

When opDispatch result is a function template that requires IFTI, it would be kept on `DotTemplateInstanceExp` so `ti->needsTypeInference(sc)` returns TRUE in its semantic().

UFCS dispatch should check that the opDispatch result is really valid or not, by instantiating the function template.
add switch jump tables for Win64, Linux, FreeBSD, and OSX