Issue 1983 - Delegates violate const

http://d.puremagic.com/issues/show_bug.cgi?id=1983

Depends on #2125, #2123, and https://github.com/D-Programming-Language/phobos/pull/1331.

1. Add *ambiguous type* to represent the type which comes from overloaded symbol.
2. Carry overload information properly, and use it.