code: function forAll(property, args) {
      var inputs,
          i;
  
      for(i = 0; i < this.goal; i++) {
          inputs = generateInputs(this, args, i);
          if(!property.apply(this, inputs))
              return Option.some(failureReporter(
                  findSmallest(this, property, inputs),
                  i + 1
              ));
      }
  
      return Option.none;
  }
docs: ## forAll(property, args)
  
  Generates values for each type in `args` using `bilby.arb` and
  then passes them to `property`, a function returning a
  `Boolean`. Tries `goal` number of times or until failure.
  
  Returns an `Option` of a `failureReporter`:
  
  var reporter = bilby.forAll(
  function(s) {
  return isPalindrome(s + s.split('').reverse().join(''));
  },
  [String]
  );