#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.
This would be more efficient if `exp_time` and `base_flux` are multiplied first, rather than each separately dividing the full array.  You can also gain by adding 1 to the exponent rather than multiplying by p again at the end.

Also, I still think this should be written using applyNonlinearity.  So:
```
p0 = exp_time * base_flux
a = alpha / numpy.log(10)
self.applyNonlinearity(lambda p: p**(1+a) / p0**a)
```