function matches(source) {
	      return baseMatches(baseClone(source, true));
	    }
Creates a function that performs a deep comparison between a given object
and `source`, returning `true` if the given object has equivalent property
values, else `false`.

**Note:** This method supports comparing arrays, booleans, `Date` objects,
numbers, `Object` objects, regexes, and strings. Objects are compared by
their own, not inherited, enumerable properties. For comparing a single
own or inherited property value see `_.matchesProperty`.

@static
@memberOf _
@category Utility
@param {Object} source The object of property values to match.
@returns {Function} Returns the new function.
@example

var users = [
  { 'user': 'barney', 'age': 36, 'active': true },
  { 'user': 'fred',   'age': 40, 'active': false }
];

_.filter(users, _.matches({ 'age': 40, 'active': false }));
// => [{ 'user': 'fred', 'age': 40, 'active': false }]