Moved test/ to scratch to not conflict with tests
Used unordered_map instead of map in Bundle

Since we never do any range-based access on Bundles, it makes little
sense to use a std::map instead of a (faster) std::unordered_map.

Likewise for the std::set used in the comparison operators.
Renamed scratch/test -> scratch/bertrand

"test" was a very stupidly generic name.
Bundle: fixes, printing, comments

- Added pretty printing when sent (via <<) to an ostream
- typedef'ed initializer_list
- converted many method arguments to const &
- +=, -=, *=, /= must go through set() instead of adjusting the value
  directly, because *this might be a Bundle recast as a BundleNegative
- BundleNegative::operator +=,-=,*=,/= can't have noexcept after the
  above change, because set() might throw a negativity_error
- Bundle /= was missing
- Removed the pointless negativity_error::create static method, as it
  just did exactly the same thing as the 2-argument constructor
- a.covers(b) was failing when both a and b had a good with q=0
- reduce(a,b) now throws invalid_argument if a and b are the same object
- the constant <-> Bundle versions of <=, <, >=, and > were broken (they
  reversed the arguments to call the non-static version, but didn't
  reverse the operator at the same time)
- Changed #define's to start with one underscore instead of 2, as 2
  seems to be system-level stuff.
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