Add preliminary zooming support
DisplayWidget: extract computeImageRect() method
DisplayWidget: use gdk.Rectangle to store rect info
DisplayWidget: write custom Rectangle class

It is only necessary to represent the (x, y, width, height) of the rectangle,
and using gtk.gdk.Rectangle will make the computation logic as well as the
unittests depend on gtk. Therefore, a custom Rectangle class is written
instead.
Implement Rectangle.computeScaledRect() and tests
DisplayWidget: extract getImageWidth() and getImageHeight()
Zoom in/out with respect to the center of the window
Reset zoom level and offset when changing image
Prevent the user from moving the image indefinitely
Save offsets in float to prevent error accumulation
Change some keybindings
Map <escape> key to the quit function
Update readme to include zooming options