allowed cropping of DisplayImages

I have editted DsiplayImages (and BoundingBox) to allow a crop()
function that crops the image to a passed in bounding box. the crop
assumes that the image begins at (0,0), but it's internal BoundingBox is
also cropped, so that the coordinates are relative to the original
BoundingBox coordinates. So if you have an image you are going to update
to the display, you can crop the image into 2, and then crop those 2
images further without having to worry about the math involved in making
sure they keep the right coordinates for when they are updated on the
display. Additionally, fixed one error in the display, whereby a
'refresh" was happening every update because the DisplayMonitor.image
was never updated from None, so it always tripped the if statement,
causing a full refresh every time. At this point, the update() loop
works, and adds 0 (zero) images to the display once it is fully updated.
Old, covered images are still not removed. All images are split into
50x50 squares or less and sent to the display to be updated. You can see
this if you call pygame.display.flip(), and time.sleep(0.1) in the
DisplayCanvas's Draw Event's for-loop.