fixes: misc but important

 - return invalid getFormatInfo when decoder hasn't initialized
 - avoid call m_decoder->start() another time when it has initialized
 - clear device event only when there is POLLIN events, otherwise it may block
   it happends during reset, there is no device event but SetDevicePollInterrupt
 - simple set output frame size to satify chrome even in texture mode
 - synchronized STREAMOFF command, wait until corresponding worker thread exit/cleanup
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
x11: conditionally build with x11 support
v4l2decode: add frame dump dir support