Added gtest; added comprehensive Bundle test

- Added google test 1.6.0
- Added comprehensive Bundle test (finding many of the errors in the
  previous commit)
- Removed old scratch/bundle-test.cpp script (it is now pointless, and
  additionally conflicted with the new test script of the same name)
Added comment about only using base-2 FP values

For tests to work properly, bundle-test needs to ensure that it is using
only base-2 floating point representable numbers like 0.5, 0.25, 0.0625,
etc. (and combinations thereof).  Otherwise tests might "fail" because,
for example, 0.1*0.2 != 0.02 in double math.
Bundle: remove unneeded +=,-= operator overloads

The versions in BundleNegative work perfectly well.
Bundle: add/sub tweak; unvirtualized methods

- Bundle +/- Bundle returns a Bundle (or throws an exception for
  subtraction if the second Bundle is not <= the first); if *either*
  operand is a BundleNegative, you get back a BundleNegative.

  Previously the return type was based on the first argument; this meant
  X+Y could be valid while Y+X could throw an exception (when X is a BN,
  Y is a B, with some negative values in X+Y).

- Removed "virtual" from several methods of BundleNegative which aren't
  overridden in Bundle.

- Moved init_list typedef from protected to private, since Bundle is the
  only inheriting class (and it's declared "friend")

- Removed the THROW/NO_THROW tests for addition, since that can't throw
  anymore (previously, when B + NB -> B, it could).
Bundle: minor comment + added override keyword
Added 'make check' that builds & runs tests

There appears to be no way with cmake to have 'make test' depend on the
test executables, thus requiring a separate 'make check' target that
builds and then runs ctest

This commit also makes bundle-test actually depend on eris, which will
be needed by the next commit.
Bundle: move large/infrequent methods to new .cpp

Bundle.hpp previously declared every method inline, which was overkill:
only a few (such as set, addition, subtraction, element access) are
likely to be helpfully inlined.  Kept those in Bundle.hpp and moved
everything else to (new) src/Bundle.cpp
make doc: builds API documentation using doxygen

doxygen seems like a nice API documentation builder; added it, currently
building HTML documentation into build/doc/api.

(Note that there is no actual doxygen-handled documentation yet;
currently it just produces stubs for everything, though includes the
nice class hierarchy diagrams)
Consumer: moved methods to .cpp

It seems a bit pointless to have gradient and hessian as inline
functions, especially when some consumer classes won't use
C::Differentiable at all.  Moved code to .cpp.
types.hpp: Removed <memory> and <map>

types.hpp hasn't used them in a long time.  This also required adding
<memory> into headers that were getting it implicitly through types.hpp.
javadoc-style brief descriptions and header fix

Turned on doxygen's JAVADOC_AUTOBRIEF so that /** Some brief. Long here
*/ comments pick up "Some brief." as the brief description.

Also told doxygen the base include directory, so that it says #include
<eris/Foo.hpp> instead of #include <Foo.hpp>
Renamed stock->assets; moved up from Firm to Agent

Consumers (often) need some sort of assets as well, so this better
belongs in Agent instead of Firm.

Renamed to 'assets' because 'stock' is sort of imposing a particular
meaning that isn't intended (though applies for some firms, of course).
doxygen: layout; v1.8.2 for c++11; require dot

At least 1.8.2 is required for c++11 support (otherwise things like a
final class won't be recognized and won't show up at all).

Added a DoxygenLayout.xml file generation, to move the class diagrams to
the bottom of the page.

Checked to make sure that dot was found when checking for doxygen in
cmake
Updated DoxygenLayout.xml (from newer doxygen)

The only difference in the generated file (other than the graph
movement) is the addition of the comment indicating the version of
doxygen that generated the file
MathJax: Added upstream git; enabled in doxygen
Added scratch code for combinations generation
Consumer: converted documentation to doxygen
Bundle: doxygen; made Bundle final

Converted documentation comments to doxygen format

Made Bundle final, since it really isn't intended to be inherited from.

Moved BN's private methods to follow the public methods
Eris: doxygen; minor tweaks

Converted documentation to doxygen format

Changed Eris's constructors to use initialization lists
Form: doxygen; de-inlined methods

Converted documentation to doxygen

Moved inlined methods into (new) src/Firm.cpp