Returns value if it is set and of type else returns `defaultValue`
@function module:sjl.valueOrDefault
@param value {*} - Value to pass through.
@param defaultValue {*} - Optional.  Value to use as default value if value is not set.  Default `null`.
@param type {String|Function} - Optional.  Constructor or string representation of type;  E.g., String or 'String'
function valueOrDefault (value, defaultValue, type) {
        defaultValue = typeof defaultValue === _undefined ? null : defaultValue;
        var retVal;
        if (isset(type)) {
            retVal = issetAndOfType.apply(null, [value].concat(sjl.restArgs(arguments, 2))) ? value : defaultValue;
        }
        else {
            retVal = isset(value) ? value : defaultValue;
        }
        return retVal;
    }