#430 Add whitening to config and make it easier in python layer

This PR is for some new functionality related to whitening the noise for RealGalaxy objects.  Now to have a RealGalaxy get the correct noise in a config script, you just add the item `whiten : true`.  This will keep track of the correct correlated noise for that object, whiten it after drawing, and then add whatever variance is left according to the `noise` attribute.  

This is facilitated by Rachel's [new catalogs](https://github.com/GalSim-developers/GalSim/wiki/RealGalaxy%20Data%20Download%20Page) that include the name of the file with the correlated noise for each object, so GalSim can start with the correct noise profile.

It is also easier now to get the whitening correct in the python layer.  The RealGalaxy object keeps track of its noise in a `noise` attribute, and any function that changes the noise also updates this attribute.  This includes things like `Convolve` which end up with a whole new object -- the `noise` attribute is propagated to the new object.  So one can do the following:
```
gal = galsim.RealGalaxy(...)
gal.applyShear(g1,g2)
big_gal = gal.createDilated(scale)
final = galsim.Convolve([big_gal,psf,pix])
final.draw(im)
var = final.noise.applyWhiteningTo(im)
```
The returned `var` is the variance in the image after whitening, which can be subtracted from the noise you want to add after this.

Other related changes included here:
* Added option to set a minimum pad size for RealGalaxy.  This is required to make sure whitening works correctly, since you need to have the original noise extend out to the edge of the image onto which you are drawing.
* Added `VariableGaussianNoise` to apply Gaussian noise with a variable sigma across the image.  I needed this because after whitening, if the postage stamps are scattered around, the existing noise in the image is variable, so this supplies a way to bring the noise variance up to a common level across the full image.
* Updated demo11 to include the new whitening feature.  It currently still has COSMOS noise added on top of that, but Barney and I both think this is not very pedagogical, so we think demo11 should probably have some simpler noise like Poisson.  However, for now I left it in there so people can see how this would work to add correlated noise onto a whitened image.  I think we should change this before this is merged to master.
* Fixed a bug in the InterpolatedImage `calculateStepK` function for noisy images.  This was issue #454 that I fixed on this branch.  The problem was that the flux within some radius can be larger than the total flux on noisy images because of negative valued pixels.  So now the calculation of the radius containing at least 99.5% of the flux goes out to either this point _or_ the last radius where the flux was still increasing if the flux at this point is larger than the total flux.  I think this is reasonable, but it is possible that noisy images need a wholly different algorithm for estimating a good stepk value.
* Added an option to the `calculateStepK` and `calculateMaxK` functions to provide a maximum/minimum (respectively) value.  For RealGalaxy, the galaxy component now gets the PSF's stepk value as an appropriate maximum value.  This was my first attempt to address the problem in #454.  It may or may not be helpful anymore given the above fix, but I left it in, since it makes sense.
* Added a `real_space` option to `AutoConvolve` and `AutoCorrelate`, in parallel with `Convolve`.  `UncorrelatedNoise` now uses an `AutoConvolve(Pixel)` as its underlying profile, which is not something you want to use an FFT for.  So now it can use real space convolution.  The profile is actually analytic, so we might even want to specialize this and have a class that does this profile directly rather than having to do the (fairly trivial) integrals.
* Fixed an issue with convolutions that include `AutoConvolve` and `AutoCorrelate` objects.  Now they are recognized as being convolutions themselves, so the underlying profiles get added to the list of convolve objects.  This allows the AutoConvolve(Pixel) to be done with FFT if it is being convolved by something else, so the hard edges aren't a problem anymore.
* Added the ability to subtract GSObjects.  I needed to be able to subtract the UncorrelatedNoise that was already in an image from whitening from a CorrelatedNoise that one wants to add, which requires subtracting their underlying profiles.  But this seemed worth allowing for regular GSObjects as well.
* Added `applyExpansion` as the conceptually simpler version of `applyDilation` and `applyMagnification`.  It was the existing name used by `CorrelatedNoise`, and the functionality had been called `applyScale` in the C++ layer, which is what both of the other python functions used to call.  Despite adding yet a third scaling function, I think it does add value.  And I like the name Barney picked better than my `applyScale` name.  So the C++ layer function is also now `applyExpansion`.
* Added a couple image arithmetic items, namely `im2 = x/im` and `im2 = x-im`, that had been missing in the python layer.
* Removed `pad_image` and complicated `noise_pad` options from RealGalaxy, since they were deemed unhelpful now that the user has access to the correct noise model.  So now `noise_pad` is just a boolean.  The user can either pad with zeros (`noise_pad = False`) or with the correct noise (`noise_pad = True`).