Changed the buffer_queue model to an event based mechanism.

Exposing a schedule() method when the event mechanism
on/off/emit is available seems redundant. So I just reused
the event mechanism and added a 'low' event that fires when
the queue is running low. The event handler can add buffers
to the queue to fill it up.