Add MiniKanren functionality on top of the core.

Namely, translate the Zzz, conj+, disj+, fresh, run and run* macros from
the original paper.

fresh and the two run macros (run and runStar) differ from the Scheme
implementations due to the fact they are difficult to translate directly
into PHP functions. Instead of taking a list of variables and then a
list of goals, fresh takes a single callable with any arbitrary argument
list (same with run):

e.g.

    fresh(function ($x, $y, $z) {
      return conjPlus(eq($x, 1), eq($y, 2), eq($z, 3);
    });