Check for vala version in notes_from_document()
Make hyperlinks active only in main views

View.Pdf now takes an additional flag, clickable_links, saying whether
links should be clickable in that view.  This is true for the view in
the presentation and the current view in the presenter, but false for
the others.
Move convert_poppler_rectangle_to_gdk_rectangle to View.Pdf

It used to be in SignalProvider, since that was the only place it was
needed.  But we'll need it for movies, so let's put it in View.Pdf and
make it public.
Pass Poppler.Rectangle to clicked_external_command

So we will know where the movies are supposed to go.
Controllables: Add video_pos method

This converts a the link position to a screen position, and returns the
Xid of the window, which will be useful for video output.
Add basic video playback capability

Every external command is taken to be a movie.  Only a test image is
displayed, but it is put in the proper places on the presenter and
presentation windows.  The videos are not removed when the page is
changed.
Video playback of files specified in links

I suspect this won't work in Windows, due to path separator issues.
Add MovieManager to track the various movies

Now clicking on a running movie will pause or restart it.
MovieManager is aware of changing pages

This allows it to stop (and maybe delete) the currently running videos.
This required hooking up the MovieManager to a View.Pdf signal, which
wasn't pleasant given the many layers of indirection and protected
attributes.  To help, the views now have a get_main_view method that should
return the current slide view.  PresentationController gets this view for
the first controllable added and stores it in the attribute main_view.
(This requires some delicate timing as to when the controllable is registered,
as it has to happen after the creation of the view in question.)  Right now,
this main_view is used for getting slide change events; it will also be the
one on which controls will be drawn.
Beginning of GUI controls for movies

This is done with a cairooverlay in gstreamer.  When the movie is playing,
the regular frames give us a chance to update the GUI.  When it's paused, we
add a timeout in which we do a seek to the current location in order to
update the GUI.  Things are sorta-kinda working at this revision, but it's
obvious that we need to refactor the separation between the movie and its
controls.  We also need to dive into the internals of pdfpc and change how
it handles button_press_events.
Refactor Movie and ControlledMovie

Movie now implements only basic movie playing.  But it includes a hook
to let subclasses add things into the pipeline.  ControlledMovie
(replacing MovieControl) subclasses Movie to provide a version with
controls on the main_view.  These controls are still at the
kinda-sorta-working level.
ControlledMovie: Improve handling of seeking

Playback pauses during seeking, but without refreshes.  The view is
redrawn on motion events instead.  Adding a sync to the
button_press_event means that a simple click now works for seeking.
However, a press-and-hold without dragging still doesn't, since we don't
have direct access to those events.
ControlledMovie: Simplify controls

There was no need for a play button, since clicking anywhere starts and
stops playback.  Instead, we make the seek bar extend all the way across
the movie, changing its height when hovering over it.
ControlledMovie: Add capability filter

Place a capsfilter upstream of the overlay element.  Here, we set the
final size of the movie, so that the cairo drawing comes out nice and
crisp.  Also, we require a frame rate of at least 25 fps to keep the
controls reasonably snappy.

Note that the videorate element causes a hitch in the playback of one
test file.  This is likely a problem with the file, but we may want to
insert the videorate only when necessary.
Reconfiguration of link handling from signal-based to actions

What started as an effort to get the movies created earlier turned into
a rather massive rewrite.  Now, when a page is loaded, an action is
created for each link (and soon other things) found.  This action is
responsible for handling mouse-in, mouse-out, and button-click events on
itself.  Something like this will be needed for auto-play movies, for
example, and it seemed better to keep the links and movies using the
same mechanism.
Movie: Construct pipeline in an Idle.add

This avoids problems with movies on the first page, where the movie was
created before all of the views had been realized.

Also rename PresentationController.video_pos to overlay_pos.
Movie: Be more intelligent when deciding if link is a movie

Also, distinguish between URIs, relative, and absolute paths in links.
ControlledMovie: Don't allow seek before movie is playing
Movie: Add auto-start and looping options

These are implemented as query strings following the file name.
Go though both the link mapping and the annotation mapping to get actions

I can't figure out how to treat classes as object, so I make a "blank"
object of each class I need and use that for pseudo-static methods.