Libav::Stream::Video tests, fast frame seek

Added specs for Libav::Stream::Video.  Tests cover existing behavior
and portions of the fast frame seek functionality.  Tests require a
specific video that is freely available, run 'rake test' for details.

Only the data gathering portion of the fast frame seek functionality
has been included in this commit.  Still need to use the data in
seek().
Stream#each_frame buffer support, Frame#release

Add buffering for Stream::Video#each_frame.  It allows frame decoding
to happen independently of frame processing by providing a series of
frames for the stream instance to use while decoding.  As long as
frames are available to the stream, it will continue decoding.  The
caller must call Stream::Video#release_frame or Frame#release to
notify the Stream that yielded frames are no longer being used in
another thread.

  # Set up a work queue
  frames = Queue.new

  # Create 10 worker threads to perform some computationally expensive
  # task on each frame, while not holding the GIL, think ffi opencv
  running = true
  threads = 10.times.map do
    while running

      # Grab a frame of the queue
      frame = frames.pop

      # Run something for a long time
      process_for_a_really_long_time(frame)

      # Release the frame so the stream can reuse it
      frame.release
    end
  end

  # In the main thread, let's read frames and throw them on the work
  # queue.
  stream.each_frame(:buffer => 20) do |frame|
    frames.push frame
  end
Start of FFS work
FFS complete and passing tests.

Added Reader#rewind to cause Reader#each_frame to re-emit previous frames.
Modified Stream#seek to use FFS data for precise frame seeking within known
  regions
Buffered Read, Rewind, Accurate Frame Seek (AFS)

Updated tests for Reader and Stream
Added examples/afs_test.rb to provide afs verification