stop()後のノイズ削除

direct_sound_sinkでstop()した後ノイズが再生されるとのバグ報告を受け、close()を修正しました。
差分
↓バグはこういう状況でした。

// 現在のバッファが書き込み中だったら
if (offset_ % buffer_size_ != 0)
{
    // 残りを0で埋める
    std::streamsize amt = buffer_size_ - offset_%buffer_size_;
    base_type::fill(offset_, 0, amt);
    play(0);
    // offset_が古いまま!
}

// 再生が終わるまで待ってから(offset_が古いままだと1個手前になる)
std::size_t index = offset_ / buffer_size_;
events_[(index+buffer_count-1)%buffer_count].wait();

// おっと、この間も再生は続いているよ!

// DirectSound停止
stop();

1個先のバッファまで0埋めしてから、最後の(0埋めでない)バッファの完了を待つように修正しました。