addFact (id, valueOrMethod, options) {
    let factId = id
    let fact
    if (id instanceof Fact) {
      factId = id.id
      fact = id
    } else {
      fact = new Fact(id, valueOrMethod, options)
    }
    debug('almanac::addFact', { id: factId })
    this.factMap.set(factId, fact)
    if (fact.isConstant()) {
      this._setFactValue(fact, {}, fact.value)
    }
    return this
  }
Add a fact definition to the engine.  Facts are called by rules as they are evaluated.
@param {object|Fact} id - fact identifier or instance of Fact
@param {function} definitionFunc - function to be called when computing the fact value for a given rule
@param {Object} options - options to initialize the fact with. used when "id" is not a Fact instance