More sound driver work.

The PlayingInstance now keeps track of its state, including asynchronous states like "stopping."  This is used to better handle race conditions and edge cases.

This should finally clear up the sound bugs - except for the ones I haven't found yet! :)

@AmbientOSX @BrettASwift @eric79