[BROKEN] scraps of marginalize()
[BROKEN] marginalize() is a jerk of a rabbithole ohmygosh
[BROKEN] new tack: a direct multi-integration function
vectorize()
[BROKEN] integrate.multi is close yet not quite there yet.
some fixes
but still not workin
aha, integrate.multi works.

it's very, very, very, very slow, but that's okay.
integrate.multi code cleanup
contain the test in a function call
Roll intergrate.multi into util.R
nit cleanups
[UNTESTED] update marginalize to use integrate.multi
durp; allow for numerical instability in is.symmetric
Actually make marginalize() work

A bunch of dumb bugs:
- i named the curried function c(), which meant the call to c() (as in, concatenate) tried to recurse
- i told it the wrong half of the arity to integrate over
- need to vectorize() the result, because the API changed as I designed it (to something weak)
Allow upper and lower bounds to be passed as args

 -> and use this to speed up the test computation
 -> plot the expected density too

Clean up the docstring while we're at it,
and remove the vestigial debug prints
stub out dNIW, and clarify its spec
 add ... to marginalize so people can control the tolerances of integrate() [BROKEN]

There's a bug: the plotted density IS a density, but its the WRONG density. Maybe I'll try changing what I marginalize over and see what happens...
[BROKEN] for debugging, print the parameters too
Plot ALLLL the marginals (directly); apparently marginalize() is generating the 2nd marginal--always
[BROKEN] ..okay. the bug is.. huh.

so, margin=1 and margin=2 give the same plot, but margin=3 appears to give the correct plot.
aaah.