Fix handling of contexts during parsing

Previously the variables of all top-level forms appeared in the global
context, which is obviously wrong for declarations containing implicitly
quantified variables.  This commit fixes this problem and introduces
some minor other improvements to the interpreter.

* Actually parse the precondition of PRIMITIVE-ACTION-DEFINITIONs.
* Raise an error in the default implementation of
  DECLARE-PRIMITIVE-ACTION since each defined primitive action has a
  specialized method (defined by DEFINE-PRIMITIVE-ACTION).
* Define a mixin LOCAL-CONTEXT-MIXIN that is inherited by all classes
  that need to have a local context for parsing of sub-expressions.
  Create the local context in an :AROUND method on INITIALIZE-INSTANCE.
* Add LOCAL-CONTEXT-MIXIN to the superclasses of BINDING-TERM and
  LOGICAL-SENTENCE-DECLARATION-TERM.
* Use the new local context in the PARSE-ARGUMENTS-FOR-TERM method for
  BINDING-TERMs.
* Use the context of the generated term in the implementation of
  PARSE-INTO-TERM-REPRESENTATION instead of simply passing the old
  context along.

Additionally
* Remove superfluous slots in PRIMITIVE-ACTION-TERM, TEST-TERM and
  PRIMITIVE-ACTION-DECLARATION-TERM.
* Remove UNIQUE-RELATION-DECLARATION-TERM and remove superclass
  UNIQUE-TERM-MIXIN from RELATIONAL-FLUENT-DECLARATION-TERM.
* Add a default method on TO-SEXPR that returns :UNREADABLE-TERM so that
  all terms can be printed in the interpreter (maybe there should be a
  configuration option that causes this method to raise an error).
* Add a PRINT-OBJECT method for PRIMITIVE-ACTION-DEFINITION that prints
  the operator and the precondition.
* Actually generate the assertions for action preconditions in the
  SET-UP-SNARK method.
* Remove the special case for BODY-TERM instances containing a single
  term in their body in INTERPRET-1-BODY-TERM, since this messes up the
  execution of stored actions.
* Add a variable *SUPPRESS-INTERPRETATION-ERRORS* that controls whether
  INTERPRET catches RUNTIME-ERRORs or not.
* Return the name of the condition if INTERPRET is terminated because a
  runtime condition was raised instead of :EXECUTION-FAILED.
* Add a check that no stored actions are present in the interpreter when
  an action is executed.  This is possible because of the fix to
  INTERPRET-1-BODY-TERM.
* Improve the output for examples that fail.
* Simplify the existing examples.  Add new example that shows the bug in
  the implementation of action choices.
Clean-up the code

* Remove some commented-out parts of the source.
* Remove -ERROR suffix from some conditions.
* Remove some methods with empty body.
Parse substitutions in new context

Parse the substitutions obtained from Snark in a new local
context so that their variables don't pollute the global
namespace.
Fix non-deterministic action choice

* Add a slot STORED-CONTINUATIONS to BASIC-INTERPRETER.
* Add slots STORED-CONTINUATIONS and ONLINEP to
  BASIC-INTERPRETER-MEMENTO.
* Extend the INTERPRETER-MEMENTO method on BASIC-INTERPRETER
  to store the stored continuations and the online state of
  the interpreter in the memento.
* Substitute the results of Snark for the corresponding free
  variables of the stored continuations.
* Change INTERPRET-1-BODY-TERM to store the continuation of
  the current term in the slot STORED-CONTINUATIONS of the
  interpreter.
* Modify INTERPRET to take stored continuation into account
  when deciding whether to continue evaluation.

Additionally
* Apply MAKE-INSTANCE in PARSE-INTO-TERM-REPRESENTATION
  instead of calling it directly to avoid triggering an
  error in SBCL.
* Use the context passed as keyword argument if the context of
  TERM is empty in PARSE-INTO-TERM-REPRESENTATION.
* Fix a bug in the default implementation of
  DECLARE-PRIMITIVE-ACTION.
* Add an argument to BACKTRACK to specify the reason for
  backtracking.
Add optimization declarations for debugging

* Add OPTIMIZE declarations for debugging that are enabled
  when :DEBUG-ODYSSEUS is in *FEATURES*.
* Move method definitions for PROCESS-DECLARATION-FOR-SNARK
  below their generic function definition.
Merge branch 'feature/fix-backtracking' into develop
Refactor the interpreter

* Extract method PROVE for proving arbitrary properties from
  CAN-EXECUTE-P.
* Extract method PERFORM-SUBSTITUTIONS-IN-INTERPRETER from
  INTERPRET-1 on PRIMITIVE-ACTION-TERM.
* Allow PROVE-USING-SNARK to take a term as first argument
  in addition to taking a cons as before.
Implement test operator

* Define SUBSTITUTE-TERM for BODY-TERMs.
* Unquote arguments for APPLICATION-TERM when parsing.
* Improve parsing of Snark variables into term representation.
* Implement INTERPRET-1 for TEST-TERM.
* Add examples.
Merge branch 'feature/add-additional-operators' into develop