DM-240: CModel magnitudes

This PR brings a lot of code over from the HSC fork, but with some improved documentation, a few code cleanups, and a modified interface to work with the new measurement framework in meas_base.

There's a lot to absorb here, so please don't hesitate to contact me (HipChat is probably best) for live discussion on some of the trickier bits (even if you're working over the weekend - I can't promise I'll be free, but there's a good chance I would be).  In general, here are some tips on where to start:
 - Check out the Doxygen comment at the top of CModel.h - it includes a section describing all the classes and how it fits together.
 - You may want to start with the Python code in cmodel.py, and trace that back through the C++, to go from high-level stuff to low-level stuff, rather than trying to read the code in the order it's written.  If you go in the order written, you'll tend to see lots of bits and pieces that don't look related before you get to the stuff that ties it together.
 - I can put together a stack that has this all built on tiger so you can play with a live copy and look at the compiled Doxygen if you like; I wouldn't want to burden you with trying to that yourself, as you'd have to build against the LSST fork and use a bunch of custom branches (all off in review to other people).  I haven't done that yet, though.
I'm working in ln(radius) space, so the radius is never actually allowed to go to zero.  Instead, there's a cutoff at some tiny but finite value, as that keeps all the math involving the ellipticities from going singular.  The prior here is essentially a constant (in ln(radius), hence a exponential in radius), with both a minimum and maximum cutoff.  But each of those cutoffs is softened, to avoid having discontinuous derivatives.