[PiSink] Ensure audio buffers use reasonable sized chunks

Previously the sink tried to consume exactly the number of samples required to maintain the desired audio latency.
That has a problem that we reapeatedly get called, and just consume a few samples each call.
As the cost of sending the data to the GPU is quite high, this results in a lot of CPU being used.
This changes the buffering to sleep for a quarter of buffer size, which ensures the samples submitted are always at lease a quarter of the total

Also, now the latency is never more than AUDIO_PLAYBUFFER, so report that directly in GetCacheTotal.
[PiSink] Add support for float and 32-bit formats

Significant CPU is consumed in converting audio to the sink's format, so add support for common formats to the sink.

Requires update firmware to handle this
[PiSink] Fix multichannel and passthough

The current Pi sink has random speaker allocation and plays noise when passthrough is enabled.
This adds messages to gpu to describe speaker layout for multichannel, and signal when passthrough is used
fixing both these issues
[PiSink] Increase Pi Sink's buffering

We do get underruns and breakups at 50ms latency. Increase to 100ms.
[PiSink] Analogue only supports stereo
Merge pull request #4475 from popcornmix/pisink_update

[PiSink] Fixes for underrun, passthrough and multichannel