This is analogous to how the core actor sends events to the frontends. This
removes the audio actor's direct dependency on the core actor, which
conceptually is on a higher layer.
The frontends use the new core actor, while the core actor uses the backend.
This is a step towards supporting multiple backends, where the core actor will
coordinate the backends.
Covers first half of #171 which is simply an port of the functionality we used
to have. Second half is actually taking advantage of playbin2 with respect to EOT
handling etc.