Fix vcos_semaphore_wait_timeout

vcos_semaphore_wait_timeout uses sem_timedwait() internally. sem_timedwait
expects an absolute timespec instead of a relative one. So it has to be
computed. Furthermore sem_timedwait has only one error return code (-1) and
uses errno to signal the actual error reason. In case of EINTR the waitinig
was interrupted by a signal and shall be continued.

Signed-off-by: Julian Scheel <julian@jusst.de>
mmal: Add queue_timedwait

Implement a blocking wait for the mmal_queue which aborts after a given
timeout.

Signed-off-by: Julian Scheel <julian@jusst.de>