[enh] fix issue 10491 - Type inference for function arguments with default value

http://d.puremagic.com/issues/show_bug.cgi?id=10491

```d
void foo(i = 10, immutable f = 10.0f, const d = 10.0)
{
    static assert(is(typeof(i) == int));
    static assert(is(typeof(f) == immutable float));
    static assert(is(typeof(d) == const double));
}

struct S(T) { T val; }

void bar(T)(x = S!T("str"))
{
    static assert(is(typeof(x) == S!T));
}
```