Fix genCmain code to kill ambiguity of `&main` expression

It's introduced by pull#2476, but the expression `&main` which is implicitly
inserted would conflict with two extern(C) and (D) "main" functions.
Add "ambiguous type" and ready to use it
fix Issue 1983 - Delegates violate const

Carry information which function is overloaded and use it properly.
fix Issue 7322 - Taking address of deprecated functions isn't refused