Added collections tests and ifEmpty argument to allow controlling behavior when all(), any(), or first() is called against an empty collection

--HG--
rename : test-aplus.js => tests.js
Tested against promises-aplus 1.3.2 test suite