Trigger 'closed' event after closing queue

This way users can be notified when the 'close' operation has
completed without relying on timeouts.
Don't instantiate queue twice in tests

A new queue instance was being created before each test in test_queue
Some tests would then create additional instances before executing.
This commit makes sure each tests instantiates only as many instances
as it needs and that each instance is closed afterwards.
Remove caret (^) dependencies from package.json

Use tilde (~) instead which is compatible with npm 1.2 - the only
version which at the moment works with node 0.8 on travis-ci