Several modifications to improve memory usage and task blocking:
Moves Bluetooth and WiFi buffers to external memory to avoid running out of memory on boot.
Moves pipeline task stacks into internal memory for speed (plenty of room due to the previous bullet!)
Speaker and pipeline tasks block on ring buffer read and writes instead of using fixed delays. This avoids switching to these tasks unnecessarily when no new data is available.
Pipeline task priorities are now dropped to 1, same as the main loop. This avoids starving the main loop from executing, which caused logged warnings and reduced wake word reaction time.
Logs which pipeline task encounters an error.
Fixes a bug when the media and announcement streams mixed together would cause clipping that caused distortion.
Several modifications to improve memory usage and task blocking: