[rbp/omxplayer] Replace jpeg parsing with cheaper byte aligned accesses

All the parsing is byte aligned which can be done about ten times faster
than bit based parsing.

Also remove the unused PNG parsing
[rbp/omxplayer] Fix bugs with jpeg parsing

I was finding GetCodingType to sometimes take 200ms for a single jpeg.
That was a mixture of the slow bit oriented parsing, but more significantly some bugs in the parsing.

The SOF blocks skipped the wrong number of bytes, resulting in us parsing junk.
The M_TEM, M_DRI, M_SOI and M_EOI tags when seen (usually due to the junk) can only escape by slowly parsing until end of file.
Also, after a M_SOS, there is the variable sized jpeg block which we can't parse, so best to give up then, rather than misparsing
the remaining jpeg data
[rbp/omxplayer] Detect bitstream corrupt and reject CMYK jpegs

GPU doesn't handle (the very rare) CMYK jpegs, so don't try sending them.
[rbp/omxplayer] No need for two debug messages per component init
[rbp/omxplayer] Ignore expected errors when tearing down audio

The previous commit to avoid the error log message for port unpopulated
doesn't actually swallow the error event, so the next command issues will fail.

(currently we don't care as we are cleaning up, but it makes editing this code fragile)

I've also changed the teardown sequence to match the video component which seems safer.
[rbp/omxplayer] Copy audio splitter port parameters directly

Should have the same effect, but direct way seems more robust to other changes
[rbp/omxplayer] Remove tunnel flushes

A tunnel flush flushes the ouput port of the source component and the input port of the dest component.
However the code already flushes all the ports of components, so many ports are flushed twice.

Remove the tunnel flush API and just flush component ports
[rbp/omxplayer] Make disabling ports optional

We typically don't want to disable ports after establishing a tunnel, so make this optional and default to false.
[rbp/omxplayer] Avoid hiding some unexpected error conditions
[rbp/omxplayer] Remove component locking

The OMX library is thread safe.

If we need to provide atomicity of groups of accesses, then that is done at the higher level
(e.g. OMXAudio), so remove the lock from the lowest level
[rbp/omxplayer] Add wait to port enables/disables

We get very occasional incorrect state errors when we don't wait for a port enable/disable.
[rbp] Add streamsilence option for hdmi

Enabling this keeps the receiver awake, and avoids losing the first couple of
seconds of audio at start of playback.
Requires updated firmware.
[rbp/omxplayer] Don't allow passthrough and dual audio
[rbp/omxplayer] Avoid clipping with amplification
[rbp/omxplayer] Fix stall on seek with deinterlace

Need to flush image_fx input port when seeking - this got lost in #3397
[rbp/omxplayer] Restructure COMXImage

Tidy up of COMXImage. Separate into file reading, encode and decode classes with separate locks.
This allows some overlap of functionality which improves the speed.
[rbp/omxplayer] Add high level locking to OMXVideo

Finally tracked down the long term bug where channel changes sometimes just produce a black screen.
When changing channel we get a couple of open/close cycles as parameters in the hints get updated (e.g. video profile/level)
These are interleaved with decoding of frames from a different thread.
If the components are shut down while a packet is being submitted, we naturally get an OMX error, and playback stalls until another channel change.

OMXAudio already uses a critical section lock. OMXVideo should also do too.