Added weak dependencies.

Weak dependencies work like hard dependencies, except that instead of
triggering simulation removal when a dependency is removed it triggers
a (new) member.weakDepRemoved(removed_id) call.  This is particularly
useful for Markets, which have a list of firms, as the firms should be
removed from any Market it belongs to when being removed.  Handling
this elsewhere was pointlessly tedious: Market now declares a weak dep
on the firm when adding a firm, and removes the firm its list of firms
if the firm gets removed from the simulation.
Added DEBUG, DEBUGF, and DEBUGVAR macros

These live in eris/debug.hpp, which is included by eris/Simulation.hpp.
When compiled with -DERIS_DEBUG, these produce output (prefixed by
filename/line number/function).

DEBUG spits out anything that can be left shifted onto std::cerr
(DEBUG(a << b) becomes std::cerr << a << b)

DEBUGF is a wrapper around fprintf(stderr, ...)

DEBUGVAR(whatever) gives a (prefixed) message of "whatever = ...".
(Note that whatever need not be a variable, despite the macro name:
DEBUGVAR(the_answer()) would yield an output line containing
"the_answer() = 42"

-DERIS_DEBUG is now added to compilation flags automatically when doing
a debug build.
Market: added public, read-only firms() method

This allows outside members to observe the firms belonging to a market.
Member.simulation() now throws when not in a sim.

Previously simulation() returned a null shared_ptr when the member
didn't belong to a simulation.  The new behaviour throws an exception.
To check whether the member has a simulation, one can now call the new
hasSimulation() method.
Forward-declare Simulation

SharedMember doesn't #include Simulation, but references it (declaring
it a friend of SharedMember).  Thus attempting to #include SharedMember
without Simulation being included elsewhere would be an error.  This
fixes that.
Simulation no longer #includes Member.hpp

It seems the Simulation<->Member header codependency doesn't exist
anymore, so we can get rid of the nasty include-halfway-down-the-file
mess.  I'm not sure when this went away, but just using
forward-declarations of Member/Agent/Good/Market is enough for
Simulation now.
Comments: added search helpers for macro methods

agent(), agents(), good(), goods(), etc. along with insert* and remove*
are macro-generated, and so searching for 'insertAgent(' returned
nothing: fixed that (sort of) by adding the names of the macro-generated
functions to a comment.
Market: lock before adding/removing firms
Don't bother with superclass just to reset assets

Just reset assets ourselves.  Calling FirmNoProd's method to do that is
sort of pointless, since it's unlikely FirmNoProd is every going to do
anything else.
QMarket optimization overhaul; Stepper oscillation

- pricing retries now has a "first" tries and a regular retries.  The
  first one typically needs more iterations because the initial value
  is arbitrary, while later ones have a decent first guess in the
  previous period's value.
- Removed obsolete 'optimizer' variable (made obsolete when
  optimization moved into QMarket itself in the eris optimizer design
  overhaul).
- The Stepper used for adjusting the price is now public, so that its
  properties can be changed by the QMarket creator.
- The default Stepper now has a minimum step size of 1/65536.  The
  previous minimum of machine epsilon was rediculously small (and
  required a lot of steps to get away from).
- Stepper now has a variable for checking whether the steps are
  oscillating back and forth at the minimum step size.
- QMarket uses oscillation detecting to detect that the price is close
  enough to the optimum and thus more price adjustments aren't needed.
- Various previously-const public attributes of Stepper are now
  non-const so that Stepper users can change the Stepper behaviour.
  This makes Stepper-using classes (like QMarket) easier: they can just
  expose the Stepper instead of needing to pass through a bunch of
  construction-time Stepper parameters.
Added support files for 'youcompleteme'

This allows youcompleteme to pick up the eris include directory
properly.