1. In Apply.scala and RuleLibrary.scala, use a 10 second timeout for ope...

...rations that

really need to complete rather than temporarily disabling timeouts.
2. In BasicAtom.scala and RuleLibrary.scala, added a cleanRulesets field that tracks
   the rulesets for which an atom is "clean". When rewriting, if the rulesets with
   which to rewrite is a subset of the rulesets with which the atom has already been
   rewritten, don't rewrite the atom.