#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.
>(1) this is completely new functionality and I thought that (as for other stuff we've put into GalSim) we might find we want to change around the user interface once people have used it a bit. So I thought maybe it wasn't worth adding quite so many bells and whistles yet.

I think one could have made precisely the same argument about the `gain_ratio` change on #524 : rather than introduce a `gain_ratio` kwarg we could simply have put a sentence in the docstring to the user about how they need to match or scale the gain (if any) in the input image.  I also don't think that a `gain=` kwarg interface is likely to be deprecated quickly.  But here and on #524 we're probably arguing about something that ~< 3 people will use in the near future, so I'm not going to say more than this, or insist on anything.

@rmandelb , @rmjarvis - should the `galsim.Image` know its own `gain` via a `.gain` attribute?  This has cropped up in a couple of places now, and could also be used to streamline the `CCDNoise` class interface in some scenarios...