Created new threaded branch

Threaded code is currently working as long as there is only one
optimizer (i.e. no actual threads): various locking code is still needed
before eris threads actually works, hence the branch.
Added `override'; weakened overloading

override should be used where applicable.

Weakened operating overloading wording to "reasonable".
Changed design to use a thread pool

Threads "work" but the current code still has many thread safety
problems.  Also still tons of debugging here.
Commented out debugging
Unlock the mutex before ending thread life

Thread destruction was broken otherwise, because the returning thread
didn't unlock the mutex.
Lock overhaul

Completely overhauled locking code: Member::ParallelLock is gone; there
is just Member::Lock which handles any number (including 1) of parallel
locks.  Also added lock manipulation (switching read <-> write, locking
and releasing) to it.

Thread running code is significant sped up by not using a queue, instead
it just iterates through agents_/interopts_/intraopts_.

Threading interface has changed: it's not set via
simulation->maxThreads() instead of a run() argument.

Threading can be avoided by setting maxThreads(0).  maxThreads(1) still
uses threading (albeit with a single thread), and seems to imposes only
a couple percent penalty (now that we aren't copying everything into a
queue).
Merge remote-tracking branch 'origin/threaded'

The threaded code now works and imposes only a miniscule performance
penalty (especially when not activated, which is the default), so it's
ready to come into the master branch.