#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.
These tests are good.  However, as these might not be the only things that go wrong, we could consider putting the
```
if args != None:
        img_nl = NLfunc(self.array, args) 
    else:
        img_nl = NLfunc(self.array)
```
calls into a Try / Except block, adding a bit of galsim-layer messaging (something like "Your function was just called on the image array and it raised the following Exception:") before raising any exception.