Fix and simplify p1_conn_flush.
Add a lower bound to audio mix buffer.
Large class hierarchy refactor for better locking.

 - Remove P1LinkNode from the hierarchy, and instead use it as a Linux
   container_of like way.

 - Model a simple pipeline by making all elements inherit from
   P1Element. This also contains the state and a lock.

 - P1PluginElement, which contains the interface for external elements.

 - Proper locking in core.

One small unfortunate thing is that we no longer check early if we can
forgo processing while the connection is still in setup. This should be
added back, but we need to guarantee the connection state check is
atomic.
Simplify p1_set_state and p1_set_target.