execute onEnd callback when finished

- listen to Pecan.queue 'end' event
- call onEnd callback