Avoid operator order ambiguity with randomness

clang and gcc were producing different random streams because of values
with multiple calculated random draws, which apparently were evaluated
in different orders.

This makes the draw orders deterministic, and makes clang and gcc
produce the same simulation results for the same seed.
CHECK renamed to PROHIBIT; enforce q_min >= 0

CHECK was a bad name because the arguments are failure conditions, not
acceptance conditions.

q_min does indeed have to be >= 0 (because q(l) and l(q) have
non-negative domains and ranges).
Adding various missing settings to cli
Renamed .*sharing.* settings to .*piracy.*
Reader step/creation settings; changed creation fn

This adds settings for reader step sd, creation shape, and U[] limits
for creation_scale.

This also changes the creation function from:

    q(l) = alpha [(l+1)^(1-beta) - 1] / (1-beta)

to:

    q(l) = alpha [(l+1)^beta - 1] / beta

i.e. newbeta = 1-oldbeta.  This makes the function a bit simpler.  It
also means beta=0 (instead of beta=1) corresponds to ln(), and the new
beta restriction (for concavity) is beta < 1 instead of beta > 0.
GUI wasn't using the max threads setting
Check and apply reader step/creation settings
Don't replace existing storage with MemoryStorage

Creativity::setup() was setting the storage to a MemoryStorage(), even
if a storage object is already set (thus breaking fileWrite()).  This
fixes it by only setting if there is currently no storage object.
Reader belief weakening + various smaller changes

- Reader belief weakening
    - Added prior_weight and prior_weight_piracy settings for
      controlling the amount of weakening
    - Added initial.belief_threshold for controlling when beliefs take
      over from initial settings
- LinearRestricted restrictions reimplementation: now just uses the
  single R matrix, querying it for upper-/lower-bound restrictions when
  needed.
- LinearRestricted upper-/lower-bounds now returns a proxy object, so
  that things like `lr.upperBounds()[3] = 12;` still works--but now it
  just adds an appropriate row to R and r instead of having separate
  storage for bounds and general linear restrictions.
- Added LinearDerived helper template class that includes most of the
  common code (for updating, etc.) from Linear (and
  LinearRestricted)-derived classes.
- GUI changes to add and rearrange various simulation settings
- Renamed init_keep_scale to init_keep_price
FileStorage: Remove belief dedupe compression

With weakening, deduplication makes much less difference than it used to
(because a reader's beliefs always change from one period to the next
there is no longer much temporal compression).  Dedupe compression still
made a small difference, but presumably that was all in the initial
periods where reader observations are identical.

This ought to make file storage considerably faster as well as now the
belief can just be written, while before it had to be checksummed, then,
if a matching checksum was found, it had to be read from disk and
compared (to prevent checksum collisions).  Reading may be a bit faster
(depending on OS caching and system hardware) as reading a belief no
longer involves seeking to some other point in the file then seeking
back.

This change makes noninformative and default-constructed beliefs smaller
(1 byte each instead of 8), and makes (non-duplicated) beliefs smaller
(1 byte instead of 12 [8 for the "immediately follows" location value,
and 4 for the K value]).  This limits K values to 120, but since the K
values in use are all less than 10, that seems like not a big deal.