'**SUMMARY**
This function does the turning of the data. The method goes through each image,
applies the preprocessing (which can return multiple images), displays each image
with an optional display of the key mapping. The user than selects the key that describes
the class of the image. The image is then post processed and saved to the directory.
The escape key kills the turking, the space key skips an image.
**PARAMETERS**
* *saveOriginal* - if true save the original image versus the preprocessed image.
* *disp_size* - size of the display to create.
* *showKeys* - Show the key mapping for the turking. Note that on small images this may not render correctly.
* *font_size* - the font size for the turking display.
* *color* - the font color.
* *spacing* - the spacing between each line of text on the display.
**RETURNS**
Nothing but stores each image in the directory. The image sets are also available
via the getClass method.
**EXAMPLE**
>>>> def GetBlobs(img):
>>>>     blobs = img.findBlobs()
>>>>     return [b.mMask for b in blobs]
>>>> def ScaleIng(img):
>>>>     return img.resize(100,100).invert()
>>>> turker = TurkingModule([\'./data/\'],[\'./turked/\'],[\'apple\',\'banana\',\'cherry\'],[\'a\',\'b\',\'c\'],preProcess=GetBlobs,postProcess=ScaleInv]
>>>> turker.turk()
>>>> # ~~~ stuff ~~~
>>>> turker.save(\'./derp.pkl\')
** TODO **
TODO: fix the display so that it renders correctly no matter what the image size.
TODO: Make it so you can stop and start turking at any given spot in the process'

def turk(self, saveOriginal=False, disp_size=(800, 600), showKeys=True, font_size=16, color=Color.RED, spacing=10):

    disp = Display(disp_size)
    bail = False
    for img in self.srcImgs:
        print img.filename
        samples = self.preProcess(img)
        for sample in samples:
            if showKeys:
                sample = self._drawControls(sample, font_size, color, spacing)
            sample.save(disp)
            gotKey = False
            while (not gotKey):
                keys = disp.checkEvents(True)
                for k in keys:
                    if (k in self.keyMap):
                        if saveOriginal:
                            self._saveIt(img, self.keyMap[k])
                        else:
                            self._saveIt(sample, self.keyMap[k])
                        gotKey = True
                    if (k == 'space'):
                        gotKey = True
                    if (k == 'escape'):
                        return
