Avoid throwing exceptions when a parameter is optional

When a parameter has a default  value, we  add Type.Missing as the value of the parameter instead of throwing exceptions which will simply not call the C# function at all.