os: WBThrottle: optimize its map and cond.Signal()

Using unordered_map to save the cpu cost and acceralate map::find() operation. Also, do not call Signal() at all time when we queue_wb(), just call Signal when it really cond.wait() on lock. When use SSD as Journal, backend dirty_io is always greater than the writeback limitation we set, therefore, the thread will be always working and no need to Signal(). So it would be meaningful

Signed-off-by: Ning Yao <zay11022@gmail.com>