WIP: Embed Youtube iframe in video view.
Basic Youtube integration in video view.

The main video view now embeds and autoplays the Youtube video. As soon
as the API code is dynamically loaded as a script fragment, we embed the
video player; as soon as the player is ready, we load the video
specified in the template context.

The new raiseyourgame.lib.youtube namespace contains functions which
control the sole player instance. Many details remain to be determined:
we need to ensure that only one player instance exists at a time, and we
probably want to set up something less rickety to handle all the
readiness data.
Remove -video suffix from youtube namespace functions.

It seemed redundant to be typing youtube/play-video and so on.
Add youtube/seek.
Add status and error handlers for Youtube player.

The handler methods don't actually perform any logic yet; consider them
hooks upon which to build further functionality. Right now the paused
and playing states have no-op handlers.
While video is playing, continuously place timecodes in channel.

While playback is in progress, an interval function will be called every
youtube/timecode-frequency milliseconds to place the current playback
timecode in the youtube/timecodes channel.
Add publish/subscribe interface to lib.async.

Calling (async/subscribe key) will return a channel which will receive
values published under that key. Calling (async/publish key value) will
put the value in all subscribed channels. This is an effective way of
broadcasting events to channels.

This functionality should be landing in core.async stable soon, so we'll
probably revisit it then.
Handle Youtube timecodes using async pub/sub.

We now subscribe to the :timecodes channel to get an output channel
which will receive timecodes as the player reaches them. Under the hood,
this is still polling-based, but in practice it should not matter.
Merge remote-tracking branch 'root/youtube_integration'