barbarically thread-safe memoize
When building with ACL2_MT_MEMO=1 and ACL2_PAR=p, turn multithreading
memoization on by default, since that's safer.

Insert limit on the number of "ignoring time increment" messages that
will be printed, in case of horribly incorrect timings.

Expand memoize tests with some multithreaded tests.  Kind of a mess
because I was debugging issue 264.
Merge remote-tracking branch 'remotes/origin/master' into tsmemo
simplify multithreaded memoize build stuff
patch up memo tests to work on acl2(hp)
update memoize tests with new timing info
tweaks to memoize
Merge remote-tracking branch 'remotes/origin/master' into tsmemo
tweak vl model command to write out .ver files as well.
add read-file-as-string function to std-io
Merge remote-tracking branch 'remotes/origin/master' into tsmemo
VL: add parsing support for assignment patterns, and add consteval support for  system function
Merge remote-tracking branch 'remotes/origin/master' into array
merge in matt's memoize changes
Merge remote-tracking branch 'remotes/origin/master' into tsmemo
VL: add support for `define macros with arguments

This turns out to be pretty hideous.  Added a few systests to try
to test it.  Started toward extending VL systests to VCS instead of
just NCV, but that's probably not working yet.
fix bug with memoize tests
Updated SINCE in purity script to avoid irrelevant log issue.
Fixed multi-threading memoization issue reported by Jared and David.

Thanks to Jared, who supplied a really helpful example provoking the bug.
Turned on/off multithreading for memoization according to whether waterfall parallelism is turned on/off, as worked out with David Rager.