decode/encode: accept empty buffer as EOS

it is natural to send EOS from input port
especially for v4l2 wrapper, where input and output are independent
v4l2: handle EOS for decode

EOS is handled in synchronos way:
 - EOS reach input port first (EosStateInput); it wake up output thread,
   then wait until output port handled EOS
 - EOS and thread communication (condition wait) work mutually
   eos state operation func are in base class with lock, subclass may use them.
   thread condition wait are kept in base class
v4l2: use drm backend
tests: use drm backend if possible
tests: yamidecode create all EGLImages during initialization