Fix wchar and dchar C++ mangling

```d
extern(C++){
    void fc2(wchar){}
    void fc4(dchar){}
}
```

```
2.065 x86/x64
void fc2(wchar) ?fc2@@YAX_Y@Z ?
void fc4(dchar) ?fc4@@YAXK@Z  void __cdecl fc4(unsigned long)

2.066.0-rc2 x86
void fc2(wchar) ?fc2@@YAXG@Z  void __cdecl fc2(unsigned short)
void fc4(dchar) ?fc4@@YAX_Y@Z ?

2.066.0-rc2 x64
void fc2(wchar) ?fc2@@YAXG@Z  void __cdecl fc2(unsigned short)
void fc4(dchar) ?fc4@@YAX_W@Z void __cdecl fc4(wchar_t)

fixed
void fc2(wchar) ?fc2@@YAX_W@Z void __cdecl fc2(wchar_t)
void fc4(dchar) ?fc4@@YAX_K@Z void __cdecl fc4(unsigned __int64)
```

I treat "wchar_t" as "unsigned long (K)".
But "unsigned int (I)" is better?
I don't know the difference of "unsigned long" and "unsigned int", on Windows.