Use GOptionContext to parse the arguments

The URI argument is now parsed with glib so that it will be easier to
add more options later. The URI is now checked whether it is actually
a path to an existing file and if so it will automatically generate a
file:/// URI for it.
Listen for key press events to switch effect

The player now sets up an X event filter to listen for key press
events. If a numeric key is pressed then it will switch to that
effect.
Add names to the effects with a help message

The player now prints a help message to standard out to give a hint
that you can switch effect by pressing a number.
Disable blending in the no-op effect

Blending needs to be disabled for the no-op effect because the
framebuffer is not cleared so it would just blend with garbage if the
video had an alpha channel.
Add a weird squares effect

This effect splits the video into little squares and then flips the
individual squares.
Add a wavey effect

This adds a little effect which offsets the texture coordinates based
on a sine wave to give a sort of distorted glass effect.