Removed debugging
MUPD: handle tiny amount in optimize, not apply

The payment is removed when the reservation is made, so there is no
need to both adding a tiny amount later (during intraApply()):
completing a reservation never subtracts from the agent's bundle
directly.

Moved the 2*extra code into intraOptimize(), and changed the way it
subtracts off the tiny amount to avoid hitting a negativity error if
the reservations removed slightly too much (they can now remove up to
extra, in total, without triggering the negativity error, and can leave
behind up to extra and still have the agent's assets go to 0).
Declare Simulation class final.

Nothing in Simulation is designed to be subclassed.
Removed object cloning.  It doesn't work.

Cloning is not something that is particularly well tested or well
supported.  In particular, it currently fails entirely because Member
isn't copyable (due to having an uncopyable mutex member).  Making it
copyable, however, is probably a bad idea: copying a Market, for
example, which already has Firms is probably going to fail: the list of
constituent firms will be duplicated, but the Simulation's weak
references relationship won't be.

Rather than having a generic clone method that fails, better to not
have one (and let supporting classes make an explicit clone method if
they really want it).
Removed compiled .ycm_extra_conf.pyc file
Locking fixes for non-simulation members

Market reservations were causing weird errors in test code: whenever an
exception got thrown that resulted in a Reservation and market being
destroyed, a no_simulation_error() got triggered because the
reservation was trying to cancel itself, which led to something trying
to get a writeLock(), which in turn called maxThreads() which needs a
simulation().  Even without maxThreads() there's a problem, though,
because sharedSelf() won't work without a simulation, either.

Fixed this by making the locking code not try to lock when the caller
is not in a simulation.  This probably won't cause issues because it
seems only likely to happen when the caller is being destroyed or about
to be destroyed.

A related change: got rid of the zero-argument writeLock() and
readLock() methods from Member.cpp: they can be handled just as well
with the varargs version in Member.hpp, resulting in less code
duplication.  (There were three versions each of writeLock and
readLock(), now down to two).
Member readLock/writeLock code reduction

Added rwLock_ helper method, reducing the bulk of readLock/writeLock
code from 4 to 2 methods.
Make rwLock_ bool a const ref
Make Simulation() constructor protected

Simulation *must* be accessed via Eris<Simulation> because we need
Eris<Simulation> to hold the first shared_ptr to the Simulation
(shared_from_self only works propertly if there is at least one
shared_ptr active).
Removed -Werror, added -DERIS_TESTS
Updated test scripts for various recent changes
Removed embedded gtest; load system gtest instead
Removed -Werror (it's more annoying than helpful)