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
Fix Object -> size_t casts to go through void*
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
fix issue 10279 - Calling a typesafe variadic @trusted function from an
@safe function results in an error.
fix issue 10456 - struct containing enum X, alias X this and a dynamic
array no longer compiles since 2.063
Merge pull request #2168 from hpohl/10279

fix issue 10279 - Calling a typesafe variadic @trusted function from an @safe function results in an error.
Merge pull request #2255 from hpohl/10456

[REG2.063] fix issue 10456 - struct containing enum X, alias X this and a dynamic array no longer compiles since 2.063
fix issue 3096 - EnumBaseType
Merge pull request #2115 from hpohl/3096

fix issue 3096 - EnumBaseType
Merge pull request #2264 from yebblies/classcast

[DDMD] Fix Object -> size_t casts to go through void*
Merge pull request #2263 from 9rnsr/fix10486

[REG2.063] Issue 10486 - Segfault on assigning `typeof(null)` to static array
Merge pull request #1409 from 9rnsr/fix1528

Issue 1528 - [tdpl] overloading template and non-template functions
eliminate unnecessary instruction
use MOVZX more for 64 bit code