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.

It is verified to work with calling a FFI function (C#) with parameters which have default values. 
It is verified in both cases:
1). It is working correctly when given different input values for the parameters with default values;
2). It is working correctly when not given input values for the parameters with default values.