FFmpeg decoder GUI control

Here's a FFmpeg GUI control. It hangs off GUIImage so works exactly the same in a skin like so:

    <control type="ffmpeg">
      <left>480</left>
      <top>100</top>
      <width>320</width>
      <height>180</height>
      <texture fallback="whateves.jpg">/some/video/file.mp4</texture>
    </control>

Since it is GUIImage, you should be able to use any tag that works on "image" control (Not that I've tried it)

Here's a demo video (https://vid.me/Suu) showing the Confluence background replaced with 4 "ffmpeg" controls. The background/left/middle videos are .avi/.swf/.mp4. The right blue is a bad filename to show we get fallback= for free.

It adds ffmpeg support to GUITexture, whos job is to grab a texture from somewhere (currently g_TextureManager or g_largeTextureManager) and put it on screen. Give it one more place to grab from (FFmpegVideoDecoder) and a new flag (useFFmpeg) in CTextureInfo same as useLarge and g_largeTextureManager. Add "ffmpeg" to GUIControlFactory aliased to GUICONTROL_IMAGE same as "largeimage" is aliased. Video is opened in CGUITextureBase::AllocResources() and closed in CGUITextureBase::FreeResources(). GUITexture already handles animated GIFs with UpdateAnimFrame() so add UpdateFFmpeg() to handle decoding.

You get everything "image" can do, with a video instead of a picture.
(fine print: software decode)