function extendProperties (dest, source, isSinglePropSchema) {
  if (isSinglePropSchema && (source === null || typeof source !== 'object')) { return source; }
  var copy = utils.extend(dest, source);
  var key;
  for (key in copy) {
    if (!copy[key] || copy[key].constructor !== Object) { continue; }
    copy[key] = utils.clone(copy[key]);
  }
  return copy;
}
Object extending with checking for single-property schema.

@param dest - Destination object or value.
@param source - Source object or value
@param {boolean} isSinglePropSchema - Whether or not schema is only a single property.
@returns Overridden object or value.