audio: add mechanism to re-route nullified audio

Fixes a race condition whereby two requests attempt to change the audio stream
(and interrupt each other).  For example, a user space app makes a call through
the audio API and before completion, a kernel function such as jack removal is
detected and is serviced.  In this case, you have a nullified audio route that
needs to be re-routed.

In order to know a routing update is needed, a boolean member mForceRouting
has been introduced to enforce routing for the next attempt to set audio output
with a non-null device.

Change-Id: Ia0aa2f27fe63c39f0980dec2e1e79dbc26b81e56
Author: Vincent Becker <vincentx.becker@intel.com>
Signed-off-by: Vincent Becker <vincentx.becker@intel.com>
Signed-off-by: Zhi Jin <zhi.jin@intel.com>
Signed-off-by: Shuo Gao <shuo.gao@intel.com>
Signed-off-by: Bruce Beare <bruce.j.beare@intel.com>
Signed-off-by: Jack Ren <jack.ren@intel.com>
Signed-off-by: Robert Beatty <robert.m.beatty@intel.com>
Merge "audio: add mechanism to re-route nullified audio" into du44