Test default arguments at time of application to verify they match the t...

When the decorator is applied to a function, this change will check the functions default arguments to make sure they fit the proper type. If the default is None, then the check is omitted (as that is a common default if something is not defined/specified).