#552 Detector non-linearity and reciprocity failure

A basic method to apply any desired non-linearity on an Image has been included to begin with. The non-linearity can be specified by a LookupTable or as a function, possibly with parameters, that can act on NumPy arrays. In addition, it also includes a feature to correct for reciprocity failure. A basic unit test to test these functionalities have also been built.
> Do you agree that the new sentence I suggested in the docstring in https://github.com/GalSim-developers/GalSim/pull/606/files#r19400885 would be a suitable replacement for what's currently there about images having to be in e-, and would properly convey what is intended here about how the function can be used?

Personally, I found the new sentence confusing as well.  I think it would actually be clearer to just remove this whole paragraph.  The first sentence, "Applies the given non-linearity function (`NLfunc`) to the image, and returns a new image of the same datatype." is, imo, completely sufficient.  It just applies some function to each pixel in the image.  It is up to the user to apply the right function at the right time.

The kind of statement that you have here should probably be in the wfirst module near where you provide the WFirst non-linearity function.  Something like "This non-linearity function should be applied after dark current and before the read noise."  But it is specific to the particular non-linearity behavior of those detectors.  It isn't anything specific to this function, which is much more general.