Replaced occurrences of "or" with "||".

"or" is deprecated as of OCaml 4.01.
Implemented caching of satisfying assignments.

Pointers to every satisfying assignment the query engine produces
are stored in a global cache, and pointers to every satisfying
assignment that satisfies the current path are stored in a
working cache. Before a query is made, the assignments in the
working cache are checked against the path condition for a
satisfying value. If a satisfying assignment is found, the query
is not carried out.