#524 - Implementation of a model for CCD charge deflection in images, following Antilogus et al (2014)

This branch is ready for review by a wider group I think, although merging the branch is not highly urgent.

On #524 , @danielgruen and I have added a module (`galsim/cdmodel.py`) to describe charge deflection in CCD pixels, also known as the "brighter-fatter" effect, following the model of Antilogus et al (2014), see http://arxiv.org/abs/1402.0725.

The effect is applied to images at the C++ layer via a new `BaseImage` member function, `applyCD()`.  We chose the constness etc. settings in the way we thought made sense, but comments welcomed.  The Python module, and the classes which store the different charge deflection models, then use this interface to apply the effect.

@danielgruen has put some unit tests in place, and is already using the code to perform tests of the effect's impact on weak lensing measurements.  However, as ever, suggestions for improved docstrings and unit tests would be welcomed on this PR.
@rmjarvis I added a short description + reference to Antilogus et al. here;
have a look whether makes sense for you.

2014-09-03 4:00 GMT+02:00 Mike Jarvis <notifications@github.com>:

> In src/Image.cpp:
>
> > +
> > +    ImageAlloc<T> output(getXMax()-getXMin()+1,getYMax()-getYMin()+1);
> > +    // working version of image, which we later return
> > +
> > +    for(int x=getXMin(); x<=getXMax(); x++){
> > +
> > +        for(int y=getYMin(); y<=getYMax(); y++){
> > +
> > +            double f = at(x, y);
> > +	
> > +	    double    fT = 0.; if(y<getYMax())  fT = (f + at(x, y + 1)) / 2.;
> > +            double    fB = 0.; if(y>getYMin())  fB = (f + at(x, y - 1)) / 2.;
> > +            double    fR = 0.; if(x<getXMax())  fR = (f + at(x + 1, y)) / 2.;
> > +            double    fL = 0.; if(x>getXMin())  fL = (f + at(x - 1, y)) / 2.;
> > +
> > +            // for each surrounding pixel do
>
> It looks like this was the start of an explanatory comment that never got
> written. It would be helpful to have a somewhat lengthy comment explaining
> what the math involved is. I.e. pull out the relevant section from
> Antilogus et al and summarize the math that you are implementing here to
> help people follow along.
>
> —
> Reply to this email directly or view it on GitHub
> <https://github.com/GalSim-developers/GalSim/pull/592/files#r17028122>.
>