fix issue 10414 - Delegate arguments for lazy variadic functions are
only inferred in first argument
Allow heterogeneous overload list of templates and functions

Overloaded functions are collected on the head side of list, and templates are on the other side.

Taking the root of heterogeneous list in DotTemplateInstanceExp::semantic.
fix Issue 1528 - [tdpl] overloading template and non-template functions

- Improve `resolveFuncCall` for integrated function call resolution.
  All of error reporting is done in here.

- Remove `overloadResolve` and `deduceFuncitonTemplate`
  The works was in `overloadResolve` are moved to `resolveFuncCall`,
  and things was in `deduceFuncitonTemplate` are divided to
  `templateResolve` and `resolveFuncCall`.

- Change the name from `overloadResolveX` to `functionResolve`
  It is paired with `templateResolve`.

- Decide 'most specialized' function based on the two `MATCH` values derived from `tiargs` and `fargs`.
  With non template functions, `last matching level for tiargs` is treated as `MATCHexact`.

----
The bug that is fixed at the same time:
fix Issue 9596 - Ambiguous match is incorrectly hidden by additional lesser match

  The change in test/runnable/template9.d is related.
Add test cases from bugzilla discussion
fix Issue 10486 - Segfault on assigning `typeof(null)` to static array
new, but never delete
Merge pull request #2228 from hpohl/10414

fix issue 10414 - Delegate arguments for lazy variadic functions are only inferred in first argument
Fix Object -> size_t casts to go through void*
fix Issue 10244 - ICE: expression.c:8364: virtual Expression* CallExp::semantic(Scope*): Assertion `td' failed
Merge pull request #2265 from 9rnsr/fix10244

Issue 10244 - ICE: expression.c:8364: virtual Expression* CallExp::semantic(Scope*): Assertion `td' failed
optimize neg and com operations
[Trivial] Fix warning: template.c:2899:48: warning: name lookup of ‘i’ changed [enabled by default]
    template.c:2836:16: warning:   matches this ‘i’ under ISO standard rules [enabled by default]
    template.c:2866:25: warning:   matches this ‘i’ under old rules [enabled by default]
Merge pull request #2266 from WalterBright/optimize-neg-com

optimize neg and com operations
[Trivial] Fix warning: deprecated conversion from string constant to char*
Merge pull request #2267 from yazd/warning-fixes

[Trivial] Some DMD warning fixes
Remove delete and goto from interpret.c

In almost all cases, these were in response to internal compiler errors.
The ICEs should produce visible error messages rather than silent
failures.
Merge pull request #2268 from donc/remove_interpret_deletes

Remove delete and goto from interpret.c
Merge pull request #2262 from WalterBright/never-delete

new, but never delete
fix issue 10479 - cannot pass implicitly to base class casted result to
out contract by ref
Merge pull request #2261 from hpohl/10479

fix issue 10479 - cannot pass implicitly to base class casted result to out contract by ref