Argument check for optional parameters with non-null default value

Changed handling of optional parameters:
* Parameter with null default value allows null values (existing behavior)
* Parameter with non-null default value adds argument null check