[FPD] Fix race condition in FPD output thread start/stop

There was a race condition where new data could come in after
the FPD output thread was told to stop.  In FPD_StopOutputThread(),
we were waiting checking to make sure there was no more data waiting.
This race caused us to wait until the next sequence ended meaning we
would skip sequences during playback because the main channel output thread
could not be started again.  Instead we now check to see if the FPD
output thread has stopped or wait up to 110ms max to make sure that
we will allow the main channel output thread to continue.
(cherry picked from commit 540ba9eb26ee3e051449fb38c7aa223cb9178521)
(cherry picked from commit 1881b2d76a742c97012e634e47668da54936c9ee)
[Falcon] Fix off-by-one error in start channel in F16v2 config
(cherry picked from commit d928b3674fe05dce4b6b212a3a380f163edee1e6)
(cherry picked from commit 6dcb85ed983159eaf80b4f6d814f37682e5eaeb7)
[C++] C++ fixes for compiling with g++ on the Pi.
(cherry picked from commit a58b207f37b99bcbde1fdbde26794bdc72a47f91)
(cherry picked from commit 4ec297194c488b2fb9533e6b1182223d0305c00c)