#555

Request to merge #555 into the master branch.
If you are going to allow for anisotropic kernels, then you need to be careful about directions here.  On the image, the [0,0] element of the array is the lower left corner.  Not the upper left as you seem to have assumed here (unless I have misinterpreted the code for this below).

I think you got the [y,x] nature of numpy arrays correct here, but galsim Images typically use the more intuitive (x,y) notation, so you probably ought to point out the difference explicitly here to make sure the user notices the convention you are assuming.

OTOH, it might be better to have the kernel be given as a 3x3 Image, rather than a numpy array that you want to convolve by.  Then the upper-left/lower-left convention would be handled for you, which might be easier for the user to understand, since they will presumably already understand galsim's convention in Images.  

In this case, a useful unit test would be to convolve by an InterpolatedImage and check that it matches.  I _believe_ it should be an almost perfect match if you use `x_interpolant='nearest'`, although the implementation here should be significantly faster than the fourier convolution that will be done for the InterpolatedImage.  (You could try using `Convolve(..., real_space=True)` for this, which might be a bit faster and maybe even more accurate in this case.)