viewer: Use an AspectFrame widget in the external viewer, like the internal one

This increases consistency both in behavior (video will not appear letterboxed
when it's not supposed to) and code (making it easy to deal with size-allocate
events to automatically set resolution restriction caps, for example).
elements: Fix RoundedRectangle.get_border_color parameters
timeline: Always set self.current_group in TimelineStage._dragEndCb
timeline: Selection cleanup
timeline: Remove Selection.last_single_obj as it's not used
project: Avoid setting the selection field for a GESTimeline object

We set and use TimelineStage().selection = Selection().
The GESTimeline().selection = Selection() field removed in this commit
was simply not used anywhere.
timeline: Remove unused addClip method
timeline: Raise a proper exception if no element is found
timeline: Remove unused imports
timeline: Use proper value in debug statement
timeline: Avoid zooming in when setting the best zoom ratio
widgets: Fix the zoom slider not showing the initial zoom value
timeline: Allow zooming in when the best fit button is pressed
dogtail tests: Fix effects tests
dogtail tests: Rename variable to clarify what it represents
dogtail tests: Reuse center method
dogtail tests: Set best zoom after each clip add operation
medialibrary: Remove unused _trackElementAddedCb method
timeline: Raise an exception when the Timeline widget has no GES Timeline
timeline: Insert the clip at the end of the longest layer