Part 3 of refactor. Also:
- better weak pointer delegate storage + tests
- we now ignore route changes when we're interrupted
- fixed bug where preferred sample rate wasn't set if audio session
wasn't active
BUG=
Review URL: https://codereview.webrtc.org/1796983004
Cr-Commit-Position: refs/heads/master@{#12007}