CONFLICT: Jon and Jonas had altered neighbouring lines in image.py

We want Jonas change to use logAttrib() and Jon's change to use
self._needTextureUpdate = False
BF: makes sure that texture/image is updated after setting contrast/color

AND this should only be set once if contrast and color are both changed
(recreate texture during draw())
BF: fixed problem with setting color/contr for greyscale ImageStim

needed a new shader program to cope with the fact that ImageStim
switched to using ubyte rather than floating point pixels
TESTS: added further tests for ImageStim

checks greyscale image coloring and also numpy textures to ImageStim and GratingStim