Clean up video size handling

Clean up video size handling by using more GStreamer utility
functions and structures. The screen display rectangle in now stored
in the video_rectangle field of type GstVideoRectangle.

When hardware overlay scaling is possible, the preserve_par option
is supported. This hasn't been tested yet.