mediacodec: Render directly to the output surface

Pass opaque buffers through the pipeline, calling a callback in the vout
to render them.

Issues:
- The vout needs to provide roughly > 30 buffers in order to be
  connected directly to the decoder without any separate buffer
  pool inbetween (that might or might not handle the extra hacky
  video format)
- The vout should know whether to advertise the opaque format or plain
  420p/rgb/whatever. That is, normally, it should say what pixel format
  it uses, so that the normal conversion can be done, but if the
  decoder wants to use the opaque format, that should be accpeted
  as well without using a converter inbetween.
- We can't start the decoder until the surface actually exists and
  is ready to be used.
- Stuff commented out in src/input/decoder.c: Since we don't return
  buffers to the decoder until we render them (or release them),
  we can't do the preroll buffering as normally, because otherwise
  the decoder would stop when it runs out of free output buffers.

When testing, it freezes a little at the startup but then plays
pretty well, with good AV sync.