implemented environment-level undo of set-watcher
implemented and tested undo of unset-watcher (one and all)
moved undo/redo before rest of environment functionality
moved watchers to extra file
implemented redo for set-watcher and unset-watcher (one and all)
eenv:add-template now checks that there aren't any facts using the template being redefined
implemented undo/redo for add-template
implemented undo/redo for add-strategy and set-strategy
implemented undo/redo for add-fact-group and rem-fact-group
refactored with-undo so that it makes redo-fun from the original body
undo and redo stacks now store action labels, which designate front-end
calls leading to the action
implemented printing of undo and redo stacks
implemented undo/redo for clear-env and reset-env
with-undo now creates the undo-fun before executing the body, but stacks
it afterwards, enabling it to undo env-clear (otherwise the undo-fun would
be stacked, but then the stack would be cleared)
stack-for-undo and stack-for-redo now return nil, prefenting implementation leakage
abstracted environment slots so that I can easily change their representation
will be used to implement copy-env and env-equal-p, which shouldn't have all
this logic in it
all base objects (facts, patterns) are now immutable, copy-object is no longer public
implemented copying of rete
implemented general graph traversal and tested it on rete
implemented non-recursive rete-node equality predicate
extracted rete pseudoequivalency functionality to separate file
extracted rete printing to separate file
removed obsolete rete/print-tree
split large rete files
restructured projecdt to be more modular