OpenGL: Optimize writing packed images to pixel buffer objects (PBO)

pack_yv12interlaced() packs pixels and writes them to an OpenGL
pixel buffer object.  This buffer may reside on the graphics card
so writes may be slower than to RAM.  Combining writes to the buffer
can improve performance by 200-300%.

This patch also provides optimized non-mmx code and also tightens
const correctness.

Fixes #10922

Signed-off-by: Lawrence Rust <lvr@softsystem.co.uk>
Signed-off-by: Jean-Yves Avenard <jyavenard@mythtv.org>