Add a new evaluation method for SAWCore terms that prepares terms for use in the symbolic simulator.  The main difference from the other simulation methods is that it allows control over what "Constant" values get unfolded by allowing callers to provide a filter function.  If a constant needs to be unfolded to continue evaluation, but the filter rejects it, computation will be halted instead and the name of the blocking constant will be returned. Otherwise, computation will proceed.
Add a new evaluation method for SAWCore terms that prepares
terms for use in the symbolic simulator.  The main difference
from the other simulation methods is that it allows control over
what "Constant" values get unfolded by allowing callers to provide
a filter function.  If a constant needs to be unfolded to continue
evaluation, but the filter rejects it, computation will be halted
instead and the name of the blocking constant will be returned.
Otherwise, computation will proceed.

In addition, switch over to use the `safeSymbol` method for creating
solver symbols, which prevents failure modes relating to nonalphabetic
characters appearing in uninterpreted constant names.

GaloisInc/saw-script,GaloisInc/saw-script,GaloisInc/saw-script,GaloisInc/saw-script,GaloisInc/saw-script