code: function checker (predicate, message, keyPaths, pathSeparator) {
      return function (obj) {
          var getValues = partial(getPathIn, [obj, __, pathSeparator]);
  
          return predicate.apply(obj, map(keyPaths, getValues)) ? [] : [message, keyPaths];
      };
  }
docs: Builds a <code>checker</code> function meant to be used with
  {@link module:lamb.validate|validate}.<br/>
  Note that the function accepts multiple <code>keyPaths</code> as a means to
  compare their values. In other words all the received <code>keyPaths</code> will be
  passed as arguments to the <code>predicate</code> to run the test.<br/>
  If you want to run the same single property check with multiple properties, you should build
  multiple <code>checker</code>s and combine them with {@link module:lamb.validate|validate}.
  @example
  var user = {
  name: "John",
  surname: "Doe",
  login: {
  username: "jdoe",
  password: "abc123",
  passwordConfirm: "abc123"
  }
  };
  var pwdMatch = _.checker(
  _.areSame,
  "Passwords don't match",
  ["login.password", "login.passwordConfirm"]
  );
  
  pwdMatch(user) // => []
  
  var newUser = _.setPathIn(user, "login.passwordConfirm", "avc123");
  
  pwdMatch(newUser) // => ["Passwords don't match", ["login.password", "login.passwordConfirm"]]
  
  @memberof module:lamb
  @category Object
  @see {@link module:lamb.validate|validate}, {@link module:lamb.validateWith|validateWith}
  @since 0.1.0
  @param {Function} predicate - The predicate to test the object properties
  @param {String} message - The error message
  @param {String[]} keyPaths - The array of keys, or {@link module:lamb.getPathIn|paths}, to test.
  @param {String} [pathSeparator="."]
  @returns {Function} A checker function which returns an error in the form
  <code>["message", ["propertyA", "propertyB"]]</code> or an empty array.